import { error } from "@sveltejs/kit"; import type { PageServerLoad } from "./$types"; import type { Table } from "$lib"; type StudySpaceData = Omit< Table<"study_spaces">, "id" | "created_at" | "updated_at" | "building_location_old" | "building_location" > & { id?: string; building_location?: google.maps.places.PlaceResult; opening_times?: { day_of_week: number; opens_at: string; closes_at: string; is_24_7: boolean; }[]; }; export const load: PageServerLoad = async ({ params, locals: { supabase } }) => { if (params.id === "new") { return { space: { description: "", building_location: undefined, location: "", tags: [], volume: "", power: "", wifi: "" } as StudySpaceData }; } const { data: space, error: err } = await supabase .from("study_spaces") .select("*, study_space_images(*)") .eq("id", params.id) .single(); if (err) error(500, "Failed to load study space"); const studySpaceData = space as StudySpaceData & Partial; const images = studySpaceData.study_space_images || []; const { data: hours, error: hoursErr } = await supabase .from("study_space_hours") .select("day_of_week, opens_at, closes_at, is_24_7") .eq("study_space_id", params.id) .order("day_of_week", { ascending: true }); if (hoursErr) error(500, "Failed to load opening times"); studySpaceData.opening_times = hours; delete studySpaceData.created_at; delete studySpaceData.updated_at; delete studySpaceData.study_space_images; return { space: studySpaceData as StudySpaceData, images }; };