import { getAdminSessionFromRequest } from "../../../../../auth";
import { fail, ok } from "../../../_lib";
import { getParticipantReferenceSettings, saveParticipantReferencePrefix } from "../_reference";

export async function GET(request: Request) {
  try {
    if (!await getAdminSessionFromRequest(request)) return fail(request, "UNAUTHORIZED", "Admin login is required.", 401);
    return ok(request, await getParticipantReferenceSettings());
  } catch (error) {
    return fail(request, "REFERENCE_SETTINGS_UNAVAILABLE", "Reference settings could not be loaded.", 500, error instanceof Error ? error.message : error);
  }
}

export async function PATCH(request: Request) {
  try {
    if (!await getAdminSessionFromRequest(request)) return fail(request, "UNAUTHORIZED", "Admin login is required.", 401);
    const payload = await request.json() as { prefix?: string };
    await saveParticipantReferencePrefix(payload.prefix ?? "");
    return ok(request, await getParticipantReferenceSettings());
  } catch (error) {
    return fail(request, "REFERENCE_SETTINGS_UPDATE_FAILED", "Reference settings could not be updated.", 500, error instanceof Error ? error.message : error);
  }
}
