npm.io
49.13.0 • Published 4d ago

@slonik/pg-driver

Licence
BSD-3-Clause
Version
49.13.0
Deps
9
Size
48 kB
Vulns
0
Weekly
0
Stars
4.9K

Slonik Driver for pg

import { createPgDriverFactory, DatabaseError } from "@slonik/pg-driver";

Error handling

All Slonik errors extend from SlonikError. SlonikError uses cause property to store the original error, which might be a DatabaseError from pg. Example:

pool.on("error", (error) => {
  const cause = error.cause;

  if (cause instanceof DatabaseError) {
    console.log(cause.code);
  }
});

This allows you to handle errors based on the lower-level error codes provided by pg driver.

Example of handling all errors that could warrant a fatal error:

const fatalErrorClasses = [
  // Connection Exception
  "08",
  // Invalid Authorization Specification
  "28",
];

pool.on("error", (error) => {
  if (error.cause instanceof DatabaseError) {
    const classCode = error.cause.code.slice(0, 2);

    if (fatalErrorClasses.includes(classCode)) {
      // Initiate shutdown due to unexpected connection state.
    }
  }
});

Keywords