/** * Data access layer - derives Prisma model keys, coerces ids and form payloads, * and wraps the CRUD calls the handler orchestrates. */ import type { PrismaModel } from './introspection/parser.js'; export declare function toPrismaModel(name: string): string; export declare function primaryKeyOf(model: PrismaModel): string; /** * Coerce l'id issu de l'URL vers le type de la clé primaire du modèle. * * L'ancienne implémentation appliquait `/^\d+$/.test(id) ? parseInt(id) : id` * sans consulter le schéma : une PK String dont la valeur est entièrement * numérique partait donc en nombre, et le vrai client Prisma rejetait la requête * (`Argument \`id\`: Invalid value provided. Expected String, provided Int.`). * Le mock, lui, acceptait n'importe quel type — d'où le test de régression * côté intégration. */ export declare function coerceId(id: string, model: PrismaModel): string | number; /** * Convertit un FormData en payload Prisma, en ignorant les champs auto-gérés. * * Renvoie aussi la liste des champs dont la valeur soumise ne se convertit pas * vers le type de la colonne : un JSON illisible, un nombre qui n'en est pas * un. Leur clé est laissée HORS du payload, et c'est `mutations.ts` — le seul * producteur de refus côté bibliothèque, cf. `errors.ts` — qui décide quoi en * faire. Cette fonction ne lève pas : elle convertit et rapporte. * * Ces valeurs étaient auparavant écrites en `null` sans un mot. Sur une colonne * nullable, la saisie et la valeur déjà stockée disparaissaient ensemble * derrière un `303` d'apparence réussie ; sur une colonne obligatoire, le * pilote répondait par un message générique ne nommant aucun champ. */ export declare function formDataToPrisma(formData: FormData, model: PrismaModel): { data: Record; invalid: string[]; }; /** * Traduit le paramètre `?page=` en fenêtre Prisma. Toute entrée qui n'est pas un * entier sûr >= 1 retombe sur la première page : sans ce garde-fou, `?page=abc` * envoyait `skip: NaN` et `?page=0` un `skip` négatif directement au client. */ export declare function paginate(pageParam: string | null, perPage: number): { page: number; skip: number; take: number; };