export class ServiceError extends Error { constructor( message: string, public readonly status = 503, ) { super(message); } } export function checkDifficultyPresetError( error: { message: string; code?: string } | null, ) { if (error?.code === "23505") throw new ServiceError("A difficulty with that name already exists", 409); if (error?.code === "23514") throw new ServiceError( "Use a name with 2–40 characters and a round time of 5–600 seconds in 5-second steps", 400, ); checkServiceError(error); } export function checkServiceError( error: { message: string; code?: string } | null, ) { if (!error) return; if (error.code === "P0001") throw new Error(error.message); if (error.code === "PGRST116") throw new ServiceError("Record not found", 404); console.error("Supabase request failed:", error.code, error.message); throw new ServiceError( "MineGeo could not reach its data service. Please try again.", ); }