From 8a686222be73cd4c5780fe3b017193b83babfcdd Mon Sep 17 00:00:00 2001 From: Taken Date: Thu, 19 Jun 2025 21:01:24 +0200 Subject: [PATCH] Updated env handling --- .env.example | 7 ++++++- src/utils/Env.ts | 19 ++++++++++++++++++- 2 files changed, 24 insertions(+), 2 deletions(-) diff --git a/.env.example b/.env.example index 89b9eb6..f1a2b38 100644 --- a/.env.example +++ b/.env.example @@ -2,7 +2,12 @@ TOKEN= DEV= HYPIXELAPIKEY= REDISURI= -POSTGRESURI= +# +PG_USER= +PG_PASSWORD= +PG_HOST= +PG_PORT= +PG_DATABASE= # DEVTOKEN= CLIENTID= diff --git a/src/utils/Env.ts b/src/utils/Env.ts index 70c9bdf..4c5841d 100644 --- a/src/utils/Env.ts +++ b/src/utils/Env.ts @@ -8,13 +8,30 @@ const prodEnv = createEnv({ DEV: z.string({ message: "DEV" }).min(1), HYPIXELAPIKEY: z.string({ message: "HYPIXELAPIKEY" }).min(1), REDISURI: z.string({ message: "REDISURI" }).min(1), - POSTGRESURI: z.string({ message: "POSTGRESURI" }).min(1) + PG_USER: z.string({ message: "PG_USER" }).min(1), + PG_PASSWORD: z.string({ message: "PG_PASSWORD" }).min(1), + PG_HOST: z.string({ message: "PG_HOST" }).min(1), + PG_PORT: z.string({ message: "PG_PORT" }).min(1), + PG_DATABASE: z.string({ message: "PG_DATABASE" }).min(1) }, runtimeEnv: process.env, + emptyStringAsUndefined: true, onValidationError: (e) => { const allErrors = e.map(err => err.message).join(" ") throw new MissingEnvVarsError(`[PROD]: ${allErrors}`) + }, + createFinalSchema: (s) => { + return z.object(s).transform(val => { + const { PG_USER, PG_PASSWORD, PG_HOST, PG_PORT, PG_DATABASE, ...rest } = val + + const url = `postgres://${PG_USER}:${PG_PASSWORD}@${PG_HOST}:${PG_PORT}/${PG_DATABASE}` + + return { + ...rest, + POSTGRESURI: url + } + }) } })