Metamigo -> Bridge

This commit is contained in:
Darren Clarke 2024-04-21 09:44:30 +02:00
parent 242f3cf6b8
commit a445762a37
145 changed files with 396 additions and 16668 deletions

51
apps/bridge-worker/db.ts Normal file
View file

@ -0,0 +1,51 @@
import pgPromise from "pg-promise";
import * as pgMonitor from "pg-monitor";
import {
dbInitOptions,
IRepositories,
AppDatabase,
} from "@digiresilience/bridge-db";
import config from "@digiresilience/bridge-config";
import type { IInitOptions } from "pg-promise";
export const initDiagnostics = (
logSql: boolean,
initOpts: IInitOptions<IRepositories>,
): 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();
};
export const withDb = <T>(f: (db: AppDatabase) => Promise<T>): Promise<T> => {
const db = initDb();
initDiagnostics(config.logging.sql, pgpInitOptions);
try {
return f(db);
} finally {
stopDiagnostics();
}
};
export type { AppDatabase } from "@digiresilience/bridge-db";