import * as v from 'valibot'; export const IdSchema = v.pipe(v.number(), v.integer(), v.minValue(1)); export const AddGrocerySchema = v.object({ name: v.pipe(v.string(), v.minLength(1)), categoryId: v.nullable(v.pipe(v.number(), v.integer(), v.minValue(1))), }); export const AddReferenceSchema = v.object({ reference: v.pipe(v.string(), v.minLength(1)), price: v.nullable(v.pipe(v.number(), v.minValue(0))), unit: v.nullable(v.string()), qualityScore: v.nullable( v.pipe(v.number(), v.integer(), v.minValue(0), v.maxValue(100)), ), }); export function numericId( value: FormDataEntryValue | null | undefined, ): number { const str = value?.toString().trim() ?? ''; const n = Number(str); if (!Number.isFinite(n) || n <= 0 || !Number.isInteger(n)) { throw new Error('Invalid id'); } return n; } export function parseFormString( value: FormDataEntryValue | null | undefined, ): string | null { const str = value?.toString().trim() ?? ''; return str || null; } export function parseOptionalNumber( value: FormDataEntryValue | null | undefined, ): number | null { const str = value?.toString().trim() ?? ''; if (!str) return null; const n = Number(str); if (!Number.isFinite(n)) return null; return n; }