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 --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
- 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 Ozcorp, 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
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.
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.
pg-generator
and PostgreSQL version,- DDL (Database creation script),
pgen
commands you executed,- JS code you executed if it is a runtime bug,
- Error message.
Send bug reports and feature requests to GitHub Issues.