@mazinsw/cogen
v3.1.0
Published
A code generator from SQL to any language
Maintainers
Readme
cogen
Code generator: turn a SQL schema into any code you want.
Write templates once (models, migrations, forms, API routes, docs...) and cogen renders them for every table of your schema. Display names, enum labels, masks and other details SQL can't hold go into column comments.
Install
npm install -g @mazinsw/cogenExample
Schema schema.sql:
CREATE TABLE `products` (
`id` INT NOT NULL AUTO_INCREMENT,
`name` VARCHAR(100) NOT NULL COMMENT 'Product name[S]',
`price` DECIMAL(10,2) NOT NULL,
`status` ENUM('draft','published') NOT NULL DEFAULT 'draft',
PRIMARY KEY (`id`)
) COMMENT='Products for sale';Template templates/$[Table.norm].ts.cgn:
/** $[table.comment] */
export interface $[Table.norm] {
$[field.each]
$[field]: $[field.if(number)]number$[field.else]string$[field.end];
$[field.end]
}Run:
cogen -t templates/ -o src/ schema.sqlResult src/Products.ts:
/** Products for sale */
export interface Products {
id: number;
name: string;
price: number;
status: string;
}Add --lang en and the interface is named Product.
How it works
- cogen parses the SQL into tables, fields, keys and the comment commands (
[S],[N:name|names]...). - It walks the template directory and mirrors it into the output directory.
- A path with
$[...]is rendered once per table (or per field), a path without it once. - The
.cgnsuffix is removed from output names. It's optional and keeps editors from parsing templates as real code.
Documentation
| | |
|---|---|
| Getting started | Five-minute tutorial. |
| Modeling | Supported SQL, column types, comment commands, naming rules. |
| Templating | Tags, loops, conditions, file names and the full reference. |
| Command line | Options, project file, filtering tables, exit codes. |
| Samples | Laravel, Adonis and React templates. |
| VS Code extension | Highlighting, completion, inline errors and live preview for .cgn templates. |
Contributing
npm install
npm test
npm run cogen -- -t samples/typescript-react -o storage/generated samples/input.sqlSee AGENTS.md for the repository layout and conventions.
License
MIT
