<?php
/**
 * 좋아요 토글 처리 API (AJAX 호출 전용)
 */

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

// 에러 메시지가 JSON 출력에 섞여 망가지는 현상을 방지
ini_set('display_errors', 0);
error_reporting(E_ALL);

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

$songId = isset($_POST['song_id']) ? intval($_POST['song_id']) : 0;

if ($songId <= 0) {
    http_response_code(400);
    echo json_encode(['success' => false, 'message' => '유효하지 않은 곡 ID입니다.'], JSON_UNESCAPED_UNICODE);
    exit;
}

try {
    $pdo = getDBConnection();
    
    // 1. 해당 곡이 실제로 존재하는지 체크 (유실되지 않은 곡)
    $checkStmt = $pdo->prepare("SELECT id FROM songs WHERE id = :id AND is_missing = 0");
    $checkStmt->execute([':id' => $songId]);
    if (!$checkStmt->fetch()) {
        http_response_code(404);
        echo json_encode(['success' => false, 'message' => '존재하지 않거나 유실된 곡입니다.'], JSON_UNESCAPED_UNICODE);
        exit;
    }
    
    // 2. 현재 좋아요 상태 확인
    $likeStmt = $pdo->prepare("SELECT id FROM liked_songs WHERE song_id = :song_id");
    $likeStmt->execute([':song_id' => $songId]);
    $likeRecord = $likeStmt->fetch();
    
    $liked = false;
    if ($likeRecord) {
        // 이미 좋아요인 경우 -> 취소 (Delete)
        $deleteStmt = $pdo->prepare("DELETE FROM liked_songs WHERE song_id = :song_id");
        $deleteStmt->execute([':song_id' => $songId]);
        $message = "좋아요가 취소되었습니다.";
    } else {
        // 좋아요 등록 (Insert)
        $insertStmt = $pdo->prepare("INSERT INTO liked_songs (song_id) VALUES (:song_id)");
        $insertStmt->execute([':song_id' => $songId]);
        $liked = true;
        $message = "좋아요한 곡에 등록되었습니다.";
    }
    
    echo json_encode([
        'success' => true, 
        'liked'   => $liked,
        'message' => $message
    ], JSON_UNESCAPED_UNICODE);
    
} catch (Exception $e) {
    http_response_code(500);
    echo json_encode([
        'success' => false, 
        'message' => '데이터베이스 오류: ' . $e->getMessage()
    ], JSON_UNESCAPED_UNICODE);
}
