Generate Sequelize model definitions from a Swagger 2.0 schema
Prequisites:
- Create a description of your REST service in a JSON format (see http://swagger.io/)
- Create your app and install (see http://docs.sequelizejs.com/en/latest/)
Currently, the project simply maps Swagger-datatypes to their Sequelize counterpart.
Sample usage:
var swaggerSequelize = ;var fs = ;var Sequelize = ; var sequelize = '<your uri>';var swaggerSpec = JSON; var MyModel = sequelize; // ... do stuff with MyModel e.g. to setup your tables: MyModel
In case you want to read from a swagger.yaml
rather than from a swagger.json
, you could replace the JSON-import
var swaggerSpec = JSON;
with a YAML-import
var yaml = ;var swaggerSpec = yaml;
To be consistent, one should "officially" add js-yaml to the project:
npm install --save js-yaml
Primary key
To make your primary key work in Sequelize one may need to mark "x-primary-key": true
in the model definition in swagger.json
:
"definitions": { "Document": { "properties": { "id": { "type": "integer", "format": "int32", "description": "Unique Identifier representing a document", "x-primary-key": true },
And in swagger.yaml
, it would be:
definitions: # Model definition Document: properties: id: type: integer format: int32 description: Unique Identifier representing a document x-primary-key: true
Additional parametrization
In the same way as with x-primary-key
, you can parameterize the attributes x-autoincrement
, x-unique
and x-allow-null
Default value for UUID fields
It is possible to set default values for fields with uuid
format
JSON
"definitions": { "Document": { "properties": { "id": { "type": "string", "format": "uuid", "default": "Sequelize.UUIDV4" },
YAML
definitions: # Model definition Document: properties: id: type: string format: uuid default: Sequelize.UUIDV4