UNPKG

@tricoteuses/senat

Version:

Handle French Sénat's open data

28 lines (27 loc) 1.08 kB
import "dotenv/config"; import { z } from "zod"; const dbSchema = z.object({ host: z.string().trim().min(1, "Must not be empty"), name: z.string().trim().min(1, "Must not be empty"), password: z.string().trim().min(1, "Must not be empty"), port: z.coerce.number().int().min(0).max(65535), user: z.string().trim().min(1, "Must not be empty"), }); export const configSchema = z.object({ db: dbSchema, }); const config = { db: { host: process.env["TRICOTEUSES_SENAT_DB_HOST"] || "localhost", name: process.env["TRICOTEUSES_SENAT_DB_NAME"] || "postgres", password: process.env["TRICOTEUSES_SENAT_DB_PASSWORD"] || "opendata", port: process.env["TRICOTEUSES_SENAT_DB_PORT"] || 5432, user: process.env["TRICOTEUSES_SENAT_DB_USER"] || "opendata", }, }; const result = configSchema.safeParse(config); if (!result.success) { console.error(`Error in configuration:\n${JSON.stringify(config, null, 2)}\nError:\n${JSON.stringify(result.error.issues, null, 2)}`); process.exit(-1); } export default result.data;