summaryrefslogtreecommitdiff
path: root/packages/db/src
diff options
context:
space:
mode:
Diffstat (limited to 'packages/db/src')
-rw-r--r--packages/db/src/index.ts8
-rw-r--r--packages/db/src/keys.ts19
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,
+ },
+ });