Template Based Scaffolding for PostgreSQL
- 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
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).
Basic Usage
- Use
pgen template
to copy one of the builtin templates or create your own template. (You can use base template for starting up.) - 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 Fortibase, see Sequelize Example above.
pg-structure
For Low Level Direct Access: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
pg-generator is developed under sponsorship of Fortibase and released as open source. See license.
Also documentation is auto generated thanks to:
- MkDocs using a theme provided by Read the Docs.
- Markdown is generated by jsdoc-to-markdown
Contributions
- For contribution please send pull requests with tests on GitHub.
- Send bugs and feature requests to GitHub Issues.