sequelize-ts-boilerplate
Version:
A REST API scaffolding tool designed to scale and easily generate CRUD endpoints based on database schema design
87 lines (68 loc) • 3.39 kB
Markdown
A REST API / Data-Access-Layer scaffolding tool designed to scale and easily generate CRUD endpoints based on database schema.
``` npm install -g sequelize-ts-boilerplate ```
-------------------------------------------------
``` sequelize-ts-boilerplate your-config.json ```
JSON configuration file ```your-config.json``` will default to ```config.json``` if not present as arg.
-------------------------------------------------
``` npm install ``` --> ```tsc``` --> ``` npm run dev ```
If you are looking for an enterprise framework, [nest](https://docs.nestjs.com) is highly recommended. Angular and Java Spring developers will feel at home.
This tool is specifically designed to scaffold a ``` routes -> controllers -> services -> daos ``` project architecture using Sequelize, Typescript, and Sequelize-Typescript ORM while trying to maintain a Node.js feel.
```config.json``` file:
```json
{
"ENV": "dev", // make name of ENV a property in DATABASE_CONNECTION_SETTINGS
"DATABASE_CONNECTION_SETINGS": {
"dev": {
"host": "your-host-url",
"db": "your-db-name",
"username": "your-username",
"password": "your-password",
"dialect": "mysql | mssql",
"port": "3306"
}
},
"ORM_GENERATE": {
"caseSensitiveProps": [],
"skipTables": [],
"manyToManyIdentifiers": ["map"],
"lookup": { // creates transient properties for CONSTANT | ENUM style table
"tableName": "Lookup",
"identifier": "lkp",
"sliceOut": "Oid"
},
"pkIdentifier": "id",
"path": {
"ormWrapper": "optional/path/to/generated/orm/wrapper/file.ts",
"daos": "optional/path/to/generated/daos/folder",
"services": "optional/path/to/generated/services/folder",
"interface": "optional/path/to/generated/interface/file.ts"
}
},
"CRUD_GENERATE": {
"shouldGenerate": true,
"framework": "express",
"ignoreTables": []
}
}
```
Folders generated:
- Controllers
- Services
- DAOS
Files generated:
- all Node framework plumbing
- interfaces file containing all database entities (for use on front-end)
- ORM wrapper (provides namespace, intellisense, etc for accessing DAOS)
- Controller and Service files will not be overwritten on subsequent generations. DAOS will be regenerated every time.
### TODO
- Better docs and readme!
- Support other Node.js frameworks - Hapi, Koa, etc. (currently only Express)
- Support other SQL dialects (currently, the data-access layer only supports SQL Server and MySQL)
- Various opt-in packages - i.e Auth, ACL, more complex CRUD endpoints, better support handling complex data table relationships (many:many), etc
- CLI tool
- Better package.json generation
-----------------------------------------------------------------------------------------------------------------
A quick note: this was made quickly and without tests. I am happy to continue contributing and fixing issues, however, I enjoy doing things other than coding in my free time as well :)... contributions welcome.
Github: https://github.com/dlemburg/sequelize-ts-boilerplate