// src/routes/api/assign-worker/+server.ts
import { json, error } from '@sveltejs/kit';
import pool from '$lib/server/database';
import type { RequestHandler } from './$types';

export const POST: RequestHandler = async ({ request }) => {
	const { videoIndex, workerId } = (await request.json()) as {
		videoIndex: number;
		workerId: number;
	};

	if (!videoIndex) {
		throw error(400, 'videoIndex가 필요합니다.');
	}

	console.log(`[API] /assign-worker: Video ${videoIndex}에 Worker ${workerId} 할당 요청`);

	// 프론트엔드에서 '[미지정]' (값 0)을 보낸 경우 DB에 NULL로 저장합니다.
	const finalWorkerId = workerId === 0 ? null : workerId;

	const client = await pool.connect();
	try {
		const result = await client.query(
			'UPDATE public."TumerMovie" SET "WorkerID" = $1 WHERE "Index" = $2',
			[finalWorkerId, videoIndex]
		);

		if (result.rowCount === 0) {
			console.warn(`[API] /assign-worker: 업데이트할 Video(Index: ${videoIndex})를 찾지 못함`);
			throw error(404, '해당 동영상을 찾을 수 없습니다.');
		}

		console.log(`[API] /assign-worker: Video ${videoIndex}의 WorkerID 업데이트 완료`);
		return json({ success: true, videoIndex, assignedWorkerId: finalWorkerId });
	} catch (err: any) {
		console.error('[API] /assign-worker: DB 업데이트 중 오류:', err);
		throw error(500, '데이터베이스 업데이트 중 오류가 발생했습니다.');
	} finally {
		client.release();
	}
};