From 92fe2fb32d0b4724317e6ba1e5a6a7d2bef7aeb6 Mon Sep 17 00:00:00 2001 From: Lars Hampe Date: Mon, 7 Oct 2024 14:29:49 +0200 Subject: [PATCH] feat(api): refactor startup env var check --- apps/api/src/utils/startup.ts | 54 +++++++++++++++++++++++------------ 1 file changed, 36 insertions(+), 18 deletions(-) diff --git a/apps/api/src/utils/startup.ts b/apps/api/src/utils/startup.ts index 98fea8f..49f901e 100644 --- a/apps/api/src/utils/startup.ts +++ b/apps/api/src/utils/startup.ts @@ -8,30 +8,48 @@ declare module 'bun' { CLERK_WEBHOOK_SECRET: string CLERK_SECRET_KEY: string CLERK_PUBLISHABLE_KEY: string + BETTERSTACK_LOG_TOKEN: string } } +const TEST_VARIABLES = ['POSTGRES_URL'] + +const DEVELOPMENT_VARIABLES = [ + ...TEST_VARIABLES, + 'CLERK_WEBHOOK_SECRET', + 'CLERK_SECRET_KEY', + 'CLERK_PUBLISHABLE_KEY', +] + +const PRODUCTION_VARIABLES = [...DEVELOPMENT_VARIABLES, 'BETTERSTACK_LOG_TOKEN'] + export const startup = async () => { if (import.meta.env.NODE_ENV === 'test') { - if (!import.meta.env.POSTGRES_URL) { - logger.error('Env Var POSTGRES_URL is missing!') - process.exit(0) - } - return + TEST_VARIABLES.map((key) => { + if (!import.meta.env[key]) { + logger.error(`Env Var ${key} is missing!`) + process.exit(0) + } + }) + } + + if (import.meta.env.NODE_ENV === 'development') { + DEVELOPMENT_VARIABLES.map((key) => { + if (!import.meta.env[key]) { + logger.error(`Env Var ${key} is missing!`) + process.exit(0) + } + }) + } + + if (import.meta.env.NODE_ENV === 'production') { + PRODUCTION_VARIABLES.map((key) => { + if (!import.meta.env[key]) { + logger.error(`Env Var ${key} is missing!`) + process.exit(0) + } + }) } - const keys = [ - 'POSTGRES_URL', - 'CLERK_WEBHOOK_SECRET', - 'CLERK_SECRET_KEY', - 'CLERK_PUBLISHABLE_KEY', - 'BETTERSTACK_LOG_TOKEN', - ] - keys.map((key) => { - if (!import.meta.env[key]) { - logger.error(`Env Var ${key} is missing!`) - process.exit(0) - } - }) if (import.meta.env.NODE_ENV === 'production') { await migrateDatabase('migrations')