link-stack/apps/bridge-worker/lib/db.ts

57 lines
1.2 KiB
TypeScript
Raw Normal View History

2024-04-21 16:59:50 +02:00
/*
2023-02-13 12:41:30 +00:00
import pgPromise from "pg-promise";
import * as pgMonitor from "pg-monitor";
2024-04-21 09:44:30 +02:00
import {
dbInitOptions,
IRepositories,
AppDatabase,
} from "@digiresilience/bridge-db";
import config from "@digiresilience/bridge-config";
2023-02-13 12:41:30 +00:00
import type { IInitOptions } from "pg-promise";
export const initDiagnostics = (
logSql: boolean,
2024-04-21 09:44:30 +02:00
initOpts: IInitOptions<IRepositories>,
2023-02-13 12:41:30 +00:00
): void => {
if (logSql) {
pgMonitor.attach(initOpts);
} else {
pgMonitor.attach(initOpts, ["error"]);
}
};
export const stopDiagnostics = (): void => pgMonitor.detach();
let pgp: any;
let pgpInitOptions: any;
export const initPgp = (): void => {
pgpInitOptions = dbInitOptions(config);
pgp = pgPromise(pgpInitOptions);
};
const initDb = (): AppDatabase => {
const db = pgp(config.db.connection);
return db;
};
export const stopDb = async (db: AppDatabase): Promise<void> => {
return db.$pool.end();
};
2024-04-21 16:59:50 +02:00
*/
export type AppDatabase = any;
2023-02-13 12:41:30 +00:00
export const withDb = <T>(f: (db: AppDatabase) => Promise<T>): Promise<T> => {
2024-04-21 16:59:50 +02:00
/*
const db = initDb();
2023-02-13 12:41:30 +00:00
initDiagnostics(config.logging.sql, pgpInitOptions);
try {
return f(db);
} finally {
stopDiagnostics();
}
2024-04-21 16:59:50 +02:00
*/
return f(null);
2023-02-13 12:41:30 +00:00
};