diff --git a/drizzle.config.ts b/drizzle.config.ts new file mode 100644 index 0000000..1c6dea1 --- /dev/null +++ b/drizzle.config.ts @@ -0,0 +1,8 @@ +import { defineConfig } from "drizzle-kit"; + +export default { + schema: "./src/db/schema.ts", + out: "./drizzle", + dialect: "postgresql", + dbCredentials: { url: process.env.DATABASE_URL! }, +} satisfies Parameters[0]; \ No newline at end of file diff --git a/package.json b/package.json index c220763..85fcaba 100644 --- a/package.json +++ b/package.json @@ -1,4 +1,4 @@ -{ +{ "name": "temp-next", "version": "0.1.0", "private": true, @@ -6,7 +6,10 @@ "dev": "next dev", "build": "next build", "start": "next start", - "lint": "eslint" + "lint": "eslint", + "db:generate": "drizzle-kit generate", + "db:push": "drizzle-kit push", + "db:studio": "drizzle-kit studio" }, "dependencies": { "bcryptjs": "^3.0.3", @@ -28,4 +31,4 @@ "tsx": "^4.21.0", "typescript": "^5" } -} +} \ No newline at end of file diff --git a/src/db/index.ts b/src/db/index.ts new file mode 100644 index 0000000..04519e6 --- /dev/null +++ b/src/db/index.ts @@ -0,0 +1,20 @@ +import { drizzle } from "drizzle-orm/postgres-js"; +import postgres from "postgres"; +import type { PostgresJsDatabase } from "drizzle-orm/postgres-js"; +import dotenv from "dotenv"; + +dotenv.config(); + +const connectionString = process.env.DATABASE_URL!; +const driver = postgres(connectionString, { max: 1 }); +let db: PostgresJsDatabase = drizzle(driver); + +if (process.env.NODE_ENV !== "production") { + const g = globalThis as unknown as { drizzleClient: PostgresJsDatabase }; + if (!g.drizzleClient) { + g.drizzleClient = db; + } + db = g.drizzleClient; +} + +export { db }; \ No newline at end of file