0.2.0 • Published 4 years ago

pg-formation v0.2.0

Weekly downloads
1
License
ISC
Repository
github
Last release
4 years ago

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.