<?php
/**
 * 가사 데이터 저장 액션 (POST 요청만 처리)
 */

require_once __DIR__ . '/config/config.php';
require_once __DIR__ . '/includes/db.php';
require_once __DIR__ . '/includes/functions.php';
require_once __DIR__ . '/includes/auth.php';
requireAdmin();

if ($_SERVER['REQUEST_METHOD'] !== 'POST') {
    header('HTTP/1.1 405 Method Not Allowed');
    die("허용되지 않은 접근 방식입니다. 가사 저장은 POST 방식으로만 가능합니다.");
}
requireCsrfToken();

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

if ($songId <= 0) {
    die("올바르지 않은 곡 ID입니다.");
}

try {
    $pdo = getDBConnection();
    
    // 안전한 업서트(Upsert) 쿼리 집행 (중복 방지 및 갱신 결합)
    $sql = "
        INSERT INTO lyrics (song_id, lyrics_text, source) 
        VALUES (:song_id, :lyrics_text, 'manual')
        ON DUPLICATE KEY UPDATE 
            lyrics_text = :lyrics_text_update,
            source = 'manual'
    ";
    
    $stmt = $pdo->prepare($sql);
    $stmt->execute([
        ':song_id'             => $songId,
        ':lyrics_text'         => $lyricsText !== '' ? $lyricsText : null,
        ':lyrics_text_update'  => $lyricsText !== '' ? $lyricsText : null
    ]);
    
    // 저장 완료 후 다시 해당 곡 상세 페이지로 즉시 리다이렉트
    header("Location: song.php?id=" . $songId);
    if (function_exists('writeAppLog')) writeAppLog('info', 'lyrics_updated', 'Lyrics saved', ['song_id' => $songId]);
    header("Location: song.php?id=" . $songId);
    exit;
    
} catch (Exception $e) {
    die("가사 데이터 저장 중 오류가 발생했습니다: " . htmlspecialchars($e->getMessage()));
}
