@tricoteuses/senat
Version:
Handle French Sénat's open data
28 lines (27 loc) • 1.08 kB
JavaScript
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;