import { json, error } from '@sveltejs/kit';
import { getSurrealDB } from '$lib/server/db';
import type { RequestHandler } from './$types';

export const PATCH: RequestHandler = async ({ params, request, locals }) => {
	// Vérifier que l'utilisateur est admin
	if (!locals.user || locals.user.role !== 'admin') {
		throw error(403, 'Accès refusé');
	}

	const { id } = params;
	const { role } = await request.json();

	// Valider le rôle
	const validRoles = ['admin', 'agency', 'advertiser', 'broadcaster', 'user'];
	if (!validRoles.includes(role)) {
		throw error(400, 'Rôle invalide');
	}

	try {
		const db = await getSurrealDB();

		// L'ID vient au format "user:yu9..." ou juste "yu9..."
		// Pour utiliser type::thing('user', $id), on a besoin juste de la partie ID
		let userId = id;
		if (id.includes(':')) {
			// Extraire la partie après "user:"
			userId = id.split(':')[1];
		}

		// Mettre à jour le rôle en SurrealDB
		const results = await db.query<any[]>(`
			UPDATE type::thing('user', $userId) SET role = $role RETURN AFTER
		`, { userId, role });

		const result = results[0];
		if (!result || result.length === 0) {
			throw error(404, 'Utilisateur non trouvé');
		}

		return json({ 
			success: true, 
			user: result[0] 
		});
	} catch (err: any) {
		console.error('Error updating user role:', err);
		throw error(500, err.message || 'Erreur lors de la mise à jour du rôle');
	}
};
