import type { PageServerLoad } from './$types'; import { requireUser } from '#lib/server/auth.js'; import { listGlobalSearchFacets, searchWorkspace } from '#lib/server/global-search.js'; import type { GlobalSearchFilters } from '#lib/server/global-search.js'; export const load: PageServerLoad = ({ locals, url }) => { requireUser(locals.user); const query = (url.searchParams.get('q') ?? '').trim().slice(0, 200); const rawType = url.searchParams.get('type'); const filters: GlobalSearchFilters & { type: NonNullable; status: string; topicId: string; formatId: string; } = { type: rawType === 'pieces' || rawType === 'shows' ? rawType : ('all' as const), status: (url.searchParams.get('status') ?? '').slice(0, 30), topicId: (url.searchParams.get('topic') ?? '').slice(0, 100), formatId: (url.searchParams.get('format') ?? '').slice(0, 100) }; const results = searchWorkspace(query, filters); const countResults = filters.type === 'all' ? results : searchWorkspace(query, { ...filters, type: 'all' }); return { query, filters, facets: listGlobalSearchFacets(), results, counts: { pieces: countResults.pieces.length, shows: countResults.shows.length } }; };