import type { RequestHandler } from './$types';
import {
	centrawarungBadRequest,
	centrawarungJson,
	centrawarungOptionsResponse,
	centrawarungServerError,
	ensureKodeposDataAvailable,
	getKabupatenParam,
	guardCentrawarungGet
} from '$lib/server/centrawarung-api';
import { getKecamatanByKota } from '$lib/server/referensi';

export const GET: RequestHandler = async (event) => {
	const authError = await guardCentrawarungGet(event);
	if (authError) return authError;

	const kodeposError = await ensureKodeposDataAvailable();
	if (kodeposError) return kodeposError;

	const provinsi = event.url.searchParams.get('provinsi')?.trim();
	const kabupaten = getKabupatenParam(event.url);

	if (!provinsi || !kabupaten) {
		return centrawarungBadRequest('Parameter provinsi dan kabupaten (atau kota) wajib diisi.');
	}

	try {
		const rows = await getKecamatanByKota(provinsi, kabupaten);

		return centrawarungJson({
			success: true,
			provinsi,
			kabupaten,
			total: rows.length,
			data: rows
		});
	} catch {
		return centrawarungServerError('Gagal mengambil data kecamatan.');
	}
};

export const OPTIONS: RequestHandler = async () => centrawarungOptionsResponse();
