Template Based Scaffolding for PostgreSQL

pg-generator is a command line utility which generates files for each table and schema of a PostgreSQL database.
  • Reverse engineers PostgreSQL database,
  • Executes nunjucks templates for each table, schema and for database,
  • Makes database objects available to templates using pg-structure.

pg-generator takes your burden of manually creating ORM files or any other files which are based on database structure.

Installation

$ npm install -g pg-generator

Sequelize Example

See sequelize template for usage and details.

$ pgen template sequelize -t sequelize-template
$ pgen exec sequelize-template -d our_crm -u user -p tOpSeCrEt -t model --fix

First command copies one of the builtin templates (sequelize) into target directory (sequelize-template). Second command generates files based on given template (sequelize-template) into target directory (model).

You may change generated templates according to your requirements, also you should add generated templates to your repository.

Basic Usage

  1. Use pgen template to copy one of the builtin templates or create your own template. (You can use base template for starting up.)
  2. Use pgen exec to create files based on your template.

You can access CLI options and their description via -h or --help arguments.

$ pgen --help
$ pgen template --help
$ pgen exec --help

Template

Creating a template from scratch is easy. Execute command below:

$ pgen template base -t my-template

To see a basic example execute following command from shell and examine files in tutorial-example directory.

$ pgen template tutorial -t tutorial-template

For a full fledged example which we use at Ozcorp, see Sequelize Example above.

For Low Level Direct Access: pg-structure

If you prefer lower level methods to directly access PostgreSQL structure to build your own generators. You can check pg-structure module which is used to build this module and provides direct access to database structure.

Full Documentation

Documentation is available on pg-generator.com

Special Thanks

Documentation is auto generated thanks to:

Contributions

  • For contribution please send pull requests with tests on GitHub.

BUG REPORTS

Without necessary information, it is hard to impossible to debug every error for every database.

Please include details below in your bug reports.

  1. pg-generator and PostgreSQL version,
  2. DDL (Database creation script),
  3. pgen commands you executed,
  4. JS code you executed if it is a runtime bug,
  5. Error message.

Send bug reports and feature requests to GitHub Issues.