Skip to content

TypeScript Enum for Postgres Errors with no runtime dependencies. Also compatible with plain JavaScript.

License

Notifications You must be signed in to change notification settings

nihalgonsalves/pg-error-enum

Repository files navigation

pg-error-enum

npm version build status

TypeScript Enum for Postgres Errors with no runtime dependencies. Also compatible with plain JavaScript.

Quick Start

Installation

# Using npm
npm install --save pg-error-enum

# Using yarn
yarn add pg-error-enum

Usage

TypeScript or ES6 Modules

import { PostgresError } from "pg-error-enum";

JavaScript

const PostgresError = require("pg-error-enum").PostgresError;

Usage

if (error.code === PostgresError.UNIQUE_VIOLATION) {
  throw new Error("That username is taken");
}

Generation

The Enum is generated directly from errcodes.txt in the Postgres repository.

It follows the syntax defined in the text file, i.e., in short:

  1. Lines beginning with # and empty lines are ignored.

  2. Sections are parsed using:

    const sectionRegex = /^Section:\s(?<description>.*)$/;
  3. Each error code is parsed using:

    const errorLineRegex =
      /^(?<sqlstate>[A-Z0-9]*)\s*(?<severity>[EWS])\s*ERRCODE_(?<constant>[A-Z_]*)\s*(?<code>[a-z_]*)$/;