diff --git a/src/server/db/index.ts b/src/server/db/index.ts new file mode 100644 index 0000000..d667de4 --- /dev/null +++ b/src/server/db/index.ts @@ -0,0 +1,29 @@ +import { drizzle } from 'drizzle-orm/node-postgres'; +import { Pool } from 'pg'; +import * as schema from './schema'; + +// Create a singleton pool +let pool: Pool | null = null; + +export function getPool(): Pool { + if (!pool) { + const connectionString = process.env.DATABASE_URL || 'postgresql://vixtix:vixtix_secret@localhost:5433/vixtix'; + pool = new Pool({ + connectionString, + max: 20, + idleTimeoutMillis: 30000, + connectionTimeoutMillis: 2000, + }); + } + return pool; +} + +export function getDb() { + return drizzle(getPool(), { schema }); +} + +// Graceful shutdown +process.on('SIGINT', () => { + if (pool) pool.end(); + process.exit(0); +});