Skip to content

DB

Singleton class that initializes and provides access to a configured pg-promise database instance.

Import:

js
import { DB, db, pgp } from 'pg-schemata';

DB.init(connection, repositories, logger?, options?)

Initializes the database singleton. Call once at application startup.

ParameterTypeRequiredDescription
connectionstring | objectYespg-promise connection string or config object
repositoriesRecord<string, Function>YesMap of repository names to model constructors
loggerobjectNoLogger instance passed to each repository (default null)
optionsobjectNoConfiguration options
options.auditActorResolver() => string | nullNoCallback returning the current actor ID for audit fields

Returns: DB class (for chaining)

Throws: Error if connection or repositories are invalid

js
import { DB } from 'pg-schemata';
import { Users } from './models/Users.js';

DB.init(process.env.DATABASE_URL, { users: Users });

With audit resolver:

js
DB.init(
  process.env.DATABASE_URL,
  { users: Users },
  console,
  { auditActorResolver: () => als.getStore()?.userId ?? null }
);

Calling init() multiple times is safe — subsequent calls are no-ops (singleton).

db()

Returns the initialized pg-promise database instance.

Returns: IDatabase<any> — the pg-promise database object with attached repositories

js
import { db } from 'pg-schemata';

const user = await db().users.findById(id);

pgp()

Returns the pg-promise library instance.

Returns: IMain — the pg-promise root library

js
import { pgp } from 'pg-schemata';

const formatted = pgp().as.format('WHERE id = $1', [id]);

A lightweight Postgres-first ORM layer.