lifetracker/packages/db/drizzle.ts
2025-01-31 18:09:27 -08:00

34 lines
850 B
TypeScript

import "dotenv/config";
import { drizzle } from "drizzle-orm/node-postgres";
import { Pool } from "pg";
import * as schema from "./schema";
import serverConfig from "@lifetracker/shared/config";
const pool = new Pool({
connectionString: serverConfig.databaseUrl,
});
export const db = drizzle(pool, {
schema,
logger: false,
});
export function getConnectionDetails() {
const sourceDb = serverConfig.databaseUrl
const sourceDbUrl = new URL(sourceDb)
return {
port: parseInt(sourceDbUrl.port),
host: sourceDbUrl.hostname,
database: sourceDbUrl.pathname.slice(1),
username: sourceDbUrl.username,
password: sourceDbUrl.password
}
}
// Testing utility
export async function getTestDB() {
const testPool = new Pool({
connectionString: serverConfig.testDatabaseUrl,
});
return drizzle(testPool, { schema });
}