<?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/auth.php';
require_once dirname(__DIR__) . '/includes/functions.php';

if ($_SERVER['REQUEST_METHOD'] !== 'POST') {
    http_response_code(405);
    echo json_encode(['success' => false, 'message' => '허용되지 않는 요청입니다.'], JSON_UNESCAPED_UNICODE);
    exit;
}

if (!verifyCsrfToken()) {
    http_response_code(403);
    echo json_encode(['success' => false, 'message' => '요청 토큰이 올바르지 않습니다.'], JSON_UNESCAPED_UNICODE);
    exit;
}

$playlistId = isset($_POST['playlist_id']) ? (int)$_POST['playlist_id'] : 0;
$songId = isset($_POST['song_id']) ? (int)$_POST['song_id'] : 0;

if ($playlistId <= 0 || $songId <= 0) {
    http_response_code(400);
    echo json_encode(['success' => false, 'message' => '요청 값이 올바르지 않습니다.'], JSON_UNESCAPED_UNICODE);
    exit;
}

try {
    $pdo = getDBConnection();

    $deleteStmt = $pdo->prepare("
        DELETE FROM playlist_songs
        WHERE playlist_id = :playlist_id AND song_id = :song_id
    ");
    $deleteStmt->execute([
        ':playlist_id' => $playlistId,
        ':song_id' => $songId,
    ]);

    if ($deleteStmt->rowCount() === 0) {
        http_response_code(404);
        echo json_encode(['success' => false, 'message' => '플레이리스트에서 해당 곡을 찾을 수 없습니다.'], JSON_UNESCAPED_UNICODE);
        exit;
    }

    $touch = $pdo->prepare("UPDATE playlists SET updated_at = NOW() WHERE id = :id");
    $touch->execute([':id' => $playlistId]);

    echo json_encode(['success' => true, 'message' => '플레이리스트에서 곡을 제거했습니다.'], JSON_UNESCAPED_UNICODE);
} catch (Throwable $e) {
    if (function_exists('writeAppLog')) {
        writeAppLog('error', 'playlist_error', 'Playlist remove failed', [
            'playlist_id' => $playlistId,
            'song_id' => $songId,
            'error' => $e->getMessage(),
        ]);
    }
    http_response_code(500);
    echo json_encode(['success' => false, 'message' => '플레이리스트에서 곡을 제거하지 못했습니다.'], JSON_UNESCAPED_UNICODE);
}
