34 lines
850 B
TypeScript
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 });
|
|
} |