<?php
header('Content-Type: application/json; charset=utf-8');

ini_set('display_errors', 0);
error_reporting(E_ALL);

require_once dirname(__DIR__) . '/config/config.php';
require_once dirname(__DIR__) . '/includes/db.php';
require_once dirname(__DIR__) . '/includes/functions.php';
require_once dirname(__DIR__) . '/includes/api.php';

apiRequireMethod('POST');

$songId = isset($_POST['song_id']) ? (int)$_POST['song_id'] : 0;
if ($songId <= 0 && isset($_POST['id'])) {
    $songId = (int)$_POST['id'];
}

if ($songId <= 0) {
    apiError('유효하지 않은 곡 ID입니다.', 'invalid_song_id', 400);
}

try {
    $pdo = getDBConnection();

    $checkStmt = $pdo->prepare("SELECT id FROM songs WHERE id = :id AND is_missing = 0");
    $checkStmt->execute([':id' => $songId]);
    if (!$checkStmt->fetch()) {
        apiError('존재하지 않거나 사용할 수 없는 곡입니다.', 'song_not_found', 404);
    }

    $updateStmt = $pdo->prepare("UPDATE songs SET play_count = play_count + 1 WHERE id = :id");
    $updateStmt->execute([':id' => $songId]);

    if (settingBool('player_history_enabled', true)) {
        $historyStmt = $pdo->prepare("INSERT INTO play_history (song_id, played_at) VALUES (:song_id, CURRENT_TIMESTAMP)");
        $historyStmt->execute([':song_id' => $songId]);
    }

    apiSuccess(['song_id' => $songId], '재생 기록을 저장했습니다.', [], ['song_id' => $songId]);
} catch (Throwable $e) {
    if (function_exists('writeAppLog')) {
        writeAppLog('error', 'play_count_error', 'Play count update failed', ['song_id' => $songId, 'error' => $e->getMessage()]);
    }
    apiError('재생 기록을 저장하지 못했습니다.', 'server_error', 500);
}
