Files
veye-lalwa/web/src/routes/recherche/+page.server.ts
T

35 lines
1.0 KiB
TypeScript
Raw Normal View History

import { basculerFacette, lireFiltres, rechercher } from '$serveur/requetes';
import type { PageServerLoad } from './$types';
/**
* Recherche à facettes — rendu serveur, jamais prérendue.
*
* Les facettes vivent dans `url.searchParams` : une URL de recherche est
* partageable et se recharge à l'identique. Le prérendu interdit d'y accéder,
* c'est pourquoi cette route reste en rendu serveur (§3bis).
*/
export const load: PageServerLoad = async ({ url }) => {
const filtres = lireFiltres(url.searchParams);
const resultats = rechercher(filtres);
return {
filtres,
resultats,
// Les liens de facette sont calculés côté serveur : la page fonctionne
// entièrement sans JavaScript.
liens: Object.fromEntries(
(['statut', 'theme', 'type', 'impact', 'guadeloupe', 'confiance'] as const).map(
(champ) => [
champ,
Object.fromEntries(
resultats.facettes[champ === 'guadeloupe' ? 'guadeloupe' : champ].map((f) => [
f.valeur,
basculerFacette(filtres, champ, f.valeur)
])
)
]
)
)
};
};