swagger-model-generator-ts
Generate swagger model definition from orm model
This module reads model schema which is created from orm model and generate swagger model definition document
CURRENT VERSION ONLY SUPPORTS SEQUELIZE ORM
Install
npm install swagger-model-generator-ts
Generate from sequlize
Generate swagger model definitions with orm model
; /** * Below code must be executed after synchronizing and initiating ORM models * In this example we will use model name Sample with sequelize orm */ swaggerGenerator;
Create swagger ui and execute swagger server with generated swagger documentation in given path
;const options = swaggerDefinition: {} apis: 'given/path/in/option' // Path to the API docs; const swaggerSpec = ; // swagger documentation routerapp;
Generate from Joi
Generate from models
Generate swagger model definitions with Joi Schema
; /** * In this example Sample is Joi Schema */let Sample = Joiobject tags'Sample' ); swaggerGenerator;
Generate from directory
You can generate swagger model definitions from Joi schema directories
let files = fs;let schemas = ;for let file of files let fileObj = ; for let key in fileObj if typeof fileObjkey === 'object' let model = fileObjkey; model = modeltagsfile0; schemas; swaggerGenerator;
Create swagger ui and execute swagger server with generated swagger documentation in given path
;const options = swaggerDefinition: {} apis: 'path/to/schemas.js' // Path to the API docs; const swaggerSpec = ; // swagger documentation routerapp;
Extend model definitions
You can extend your model definition generated from generator by swagger allOf
keyword
extended.js
/** * @swagger * definitions: * ExtendedUser: * allOf: * - $ref: '#/definitions/User' * - type: object * - properties: * examples: * type: array * items: * $ref: '#/definitions/Example' */
add extended.js to the swagger configuration
swaggerDefinition: apis: './src/infra/swagger/extended.js' // Path to the API docs
Result
models.js
/** * @swagger * definitions: * Sample1: * type: object * required: * - id * properties: * id: * type: string * description: sample data! * enum: * - Property * Sample2: * type: object * required: * - id * properties: * id: * type: string * enum: * - Property */