npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2024 – Pkg Stats / Ryan Hefner

pg-database

v2.1.19

Published

Handy wrapper for pg (node-postgres) database connections.

Downloads

6

Readme

pg-database

Overview

Handy wrapper for pg (formerly node-postgres) database connection instances featuring:

  • CRUD operation wrappers
  • named placeholders
  • query logging

You can import and instantiate database connection manually:

import Database from 'pg-database';
const database = new Database('<connection-uri>', console.log);

You can import an "automatically instantiated" database providing DB_URI=<connection-uri> and DB_LOG=<1|> environment variables:

import { database } from 'pg-database';

You can use this module as a simple drop-in replacement for pg.
Original pool, query and close methods are bound as they are.

import { database } from 'pg-database';

const client = await database.pool.connect();
client.query('LISTEN events');
client.on('notification', console.log);
client.on('error', console.error);
await client.release();

CRUD

Check out src/index.ts to get a picture of available methods: minimal and simple.

Named placeholders

You can use object for replacements (named placeholders) instead of array replacements (positional placeholders).
Placeholders must begin with : or $ and can contain only letters, numbers, underscores, dashes.

Before:

client.query('SELECT name FROM people WHERE name = $1', ['john'])

After:

client.query('SELECT name FROM people WHERE name = :name', { name: 'john' })

Query logging

You can log executed queries.

Either create your db instance with a customer logger:

const database = new Database('<connection-uri>', console.log);

Or use the automatic instance setting DB_URI=<connection-uri> and DB_LOG=1 env variables:

import { database } from 'pg-database';

Development

To run tests locally:

# start db
docker run --rm --name pg-database-test -p 5432:5432 --detach --env POSTGRES_USER=root --env POSTGRES_PASSWORD=root --env POSTGRES_DB=test postgres:14-alpine postgres -c log_statement=all

# run tests
yarn test

# remove db
docker rm -f pg-database-test