diff options
| author | tranminhquang <tranminhquang4421@gmail.com> | 2025-07-15 13:29:16 +0700 |
|---|---|---|
| committer | tranminhquang <tranminhquang4421@gmail.com> | 2025-07-15 13:29:16 +0700 |
| commit | 9d5fb821c75dd2f0c0d3da6fb427db966d3c7358 (patch) | |
| tree | 96ebbdd997f69a57aa0ab6390966ab784bd135be /packages/db/src | |
| parent | 55978c30fa8629840995922e76a98ad4b2045b80 (diff) | |
| download | opencut-9d5fb821c75dd2f0c0d3da6fb427db966d3c7358.tar.gz | |
feat: integrate @t3-oss/env for environment variable management across the application
Diffstat (limited to 'packages/db/src')
| -rw-r--r-- | packages/db/src/index.ts | 8 | ||||
| -rw-r--r-- | packages/db/src/keys.ts | 19 |
2 files changed, 22 insertions, 5 deletions
diff --git a/packages/db/src/index.ts b/packages/db/src/index.ts index b480f566..9b395ab6 100644 --- a/packages/db/src/index.ts +++ b/packages/db/src/index.ts @@ -1,17 +1,15 @@ import { drizzle } from "drizzle-orm/postgres-js"; import postgres from "postgres"; import * as schema from "./schema"; +import { keys } from "./keys"; +const { DATABASE_URL } = keys(); // Create a lazy database instance that only initializes when accessed let _db: ReturnType<typeof drizzle> | null = null; function getDb() { - if (!process.env.DATABASE_URL) { - throw new Error("DATABASE_URL is not set"); - } - if (!_db) { - const client = postgres(process.env.DATABASE_URL); + const client = postgres(DATABASE_URL); _db = drizzle(client, { schema }); } diff --git a/packages/db/src/keys.ts b/packages/db/src/keys.ts new file mode 100644 index 00000000..65983416 --- /dev/null +++ b/packages/db/src/keys.ts @@ -0,0 +1,19 @@ +import { createEnv } from "@t3-oss/env-nextjs"; +import { z } from "zod"; + +export const keys = () => + createEnv({ + server: { + NODE_ENV: z + .enum(["development", "production", "test"]) + .default("development"), + DATABASE_URL: z + .string() + .startsWith("postgres://") + .or(z.string().startsWith("postgresql://")), + }, + runtimeEnv: { + NODE_ENV: process.env.NODE_ENV, + DATABASE_URL: process.env.DATABASE_URL, + }, + }); |
