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-formation

v0.2.0

Published

stateful schema migration for posgresql

Downloads

3

Readme

pg-formation

Node.js stateful database schema management tool built exclusively for postgres.

With many migration tools you specify the changes to your schema. With pg-formation you specify the final schema and pg-formation infers the changes.

Please check out the important caveats.

Installation

$ npm install pg-formation

Installing this module locally adds an executable file into your node_modules/.bin directory. Use node_modules/.bin/pg-formation to run the program if installed this way. You can use the -g option to npm to install globally and use pg-formation to run the program.

Usage

pg-formation [command]

Commands:
  pg-formation dump   - Dump the contents of an existing database
  pg-formation parse  - Parse the configuration and dump the normalized contents
  pg-formation show   - Show the statements needed to update the database
  pg-formation run    - Run the update statements and check the updated database

Options:
  --version              Show version number                           [boolean]
  -d, --database-url     database connection url                        [string]
  -t, --config-format    Output format for dump or override input format
                        [string] [choices: "js", "json", "yaml"] [default: "js"]
  -s, --database-schema  The schema to run the migration
                                                    [string] [default: "public"]
  -c, --config-file      File to load the schema
                                    [string] [default: "schema.@(js|json|yaml)"]
  -f, --function-file    Folder to load functions
                                  [string] [default: "plpgsql/**/*.@(sql|psql)"]
  --help                 Show help                                     [boolean]

If the --database-url option is not provided then the DATABASE_URL environment variable will be consulted. If both are missing the connection will be attempted assuming the environment is set up using the standard postgres environment variables.

The --config-file and --function-file options specify a glob pattern to search for schema definition and function files. For definition files you can specify json, yaml, or common.js files. All the configuration files will be loaded and merged, but it is an error to specify the same table, type, or function multiple times.

pg-formation dump

The dump command will scan the schema from the database and output the result to standard output. Use this method to bootstrap the process if there is an existing database schema. See the important caveats.

pg-formation parse

The parse command loads the configuration specified by the --config-file and --function-file options and normalizes the results. The normalized result is then dumped to stdout using the format specifed with the --config-format argument.

pg-formation show

The show commands shows the statements that would be run to update the database to the loaded configuration.

pg-formation run

The run command executes the statements required to update the databse to the loaded configuration. After the update the database is re-scanned to make sure it is consistent with the loaded configuration.

Caveats

This tool is currently alpha quality at best. Please consider carefully if you wish to use if for production deployments.

This tool only understands a subset of the possible postgres schemas. If you use this tool with an existing schema that is not understood then calamity is almost sure to follow.