diff --git a/packages/backend/src/env/index.ts b/packages/backend/src/env/index.ts new file mode 100644 index 0000000..375dca8 --- /dev/null +++ b/packages/backend/src/env/index.ts @@ -0,0 +1,18 @@ +import { z } from 'zod'; +import dotenv from 'dotenv'; + +dotenv.config(); + +const envSchema = z.object({ + PORT: z + .string() + .refine( + (port) => parseInt(port) > 0 && parseInt(port) < 65536, + "Invalid port number" + ), + DATABASE_URL: z.string().min(10) +}); + +type Env = z.infer; + +export const ENV: Env = envSchema.parse(process.env); diff --git a/packages/backend/src/models/database.ts b/packages/backend/src/models/database.ts index 81547d8..c03d5b7 100644 --- a/packages/backend/src/models/database.ts +++ b/packages/backend/src/models/database.ts @@ -1,11 +1,4 @@ -import 'dotenv/config'; import { drizzle } from 'drizzle-orm/node-postgres'; -import { pgTable, text, uuid } from 'drizzle-orm/pg-core'; - -const DATABASE_URL = process.env.DATABASE_URL; -if (!DATABASE_URL) { - throw new Error("DATABASE_URL is missing") -} - -export const db = drizzle(DATABASE_URL); +import { ENV } from '../env'; +export const db = drizzle(ENV.DATABASE_URL);