# Template Based Scaffolding for PostgreSQL
- Reverse engineers PostgreSQL database,
- Executes nunjucks (opens new window) templates for each table, schema and for database,
- Makes database objects available to templates using pg-structure (opens new window).
pg-generator (opens new window) 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 (opens new window) 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.
# For Low Level Direct Access: pg-structure (opens new window)
If you prefer lower level methods to directly access PostgreSQL structure to build your own generators. You can check pg-structure (opens new window) module which is used to build this module and provides direct access to database structure.
# Full Documentation
Documentation is available on pg-generator.com (opens new window)
# Special Thanks
Documentation is auto generated thanks to:
- MkDocs (opens new window) using a theme (opens new window) provided by Read the Docs (opens new window).
- Markdown is generated by jsdoc-to-markdown (opens new window)
# Contributions
- For contribution please send pull requests with tests on GitHub (opens new window).
# 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 (opens new window).