28 lines
928 B
TypeScript
28 lines
928 B
TypeScript
import { drizzle } from "drizzle-orm/node-postgres";
|
|
import { Pool } from "pg";
|
|
import * as dotenv from "dotenv";
|
|
|
|
dotenv.config();
|
|
|
|
// Create pool - DATABASE_URL check will happen at runtime when pool is actually used
|
|
// During build time, this won't fail even if DATABASE_URL is not set
|
|
const pool = new Pool({
|
|
connectionString: process.env.DATABASE_URL || "postgresql://localhost:5432/temp",
|
|
max: 20,
|
|
idleTimeoutMillis: 30000,
|
|
connectionTimeoutMillis: 10000,
|
|
ssl: process.env.DATABASE_SSL === "true" ? { rejectUnauthorized: false } : false,
|
|
});
|
|
|
|
// Test connection on startup
|
|
pool.on("error", (err) => {
|
|
console.error("Unexpected error on idle client", err);
|
|
});
|
|
|
|
// Validate DATABASE_URL at runtime (not during build)
|
|
if (process.env.NODE_ENV === "production" && !process.env.DATABASE_URL) {
|
|
console.warn("WARNING: DATABASE_URL is not set. Database operations will fail.");
|
|
}
|
|
|
|
export const db = drizzle(pool);
|