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-db-objects

v0.3.13

Published

DB and table lifecycle management Edit

Downloads

41

Readme

Build Status Coverage Status Greenkeeper badge

Warning: This library is in pre-release and the API will likely be changed with minor versions until we reach a 1.0.0 release

Features

  • Automatic Camelcasing
  • Multiple-instance-safe migrations. Only one instance will perform migrations
  • Wrapped pg query object for consistent logging
  • Schema lifecycle management tied to NODE_ENV for dev, test and prod
  • Keyset query support, based on the graphql connection model

Usage

yarn add pg-db-objects
const { Db } = require('pg-db-objects')
const path = require('path')

// setup your DB, providing path to a SQL directory, it will be recursively searched for **/*.sql files
const db = new Db({sqlDirectory: path.join(__dirname, 'sql')})

// perform any necessary migrations to bring the DB up to spec
await db.sync()

// make a simple query with pure SQL
const { rows } = await db.query(`select columns from normal_sql_land`)

// produce a paginated result with cursors using the keyset helper
const keyset = db.getTable('pagination_land').getKeyset()

// if you have a cursor from a previous use that
const {edges, pageInfo} = await keyset.start({field: 'seq', first: 12}).query()
// edges[0].cursor = 'a_very_opaque-cursor'

// if you have a cursor from a previous use that
const {edges, pageInfo} = await keyset.continue({from: 'a_very_opaque_cursor', prev: 12}).query()

// close the DB
await db.close()

Docs

Please see https://humanise-ai.github.io/pg-db-objects/index.html

Limitations

First, for now we only support DB connection parameters through the standard PG* environment variables described by node-pg here, so be sure to set those.

Since we use async/await and the rest sprad operator we only support Node versions 8.6 and above for now.

We only support one seek parameter for keysets.

For security reasons, raw where and order sql conditions on keysets are not encoded/decoded.

Other projects that may interest you

The graphql community has come up with two (that we know of) libraries that do an awesome job of bridging the gap between SQL and complex clients requiring pagination.

  1. postgraphql - https://github.com/postgraphql/postgraphql
  2. join monster. https://github.com/stems/join-monster