Node Sequelize CRUD Builder
crud builder Create sequelize models using JSON schema
Installation
Install node crud builder
npm i --save stark-node-crud-builder
Dependencies
Install dependent libraries
- adm-zip
- archiver
- cors
- del
- express
- joi
- mkdirp
npm i --save adm-zip archiver cors del express joi mkdirp
Usage
Import this in your entity/controller file.
const crud_builder = require('stark-node-crud-builder')
Use this in your controller file
// some code
const crud_builder = require('stark-node-crud-builder')
const data = {
"project_name": "",
"app_name": "",
"table_name": "",
"create_model": true,
"create_view": true,
"create_serializer": true,
"create_unittest": true,
"create_url": true,
"create_swagger": true,
"create_instruction": false,
"fields": [
{
"name": "",
"field_type": "character",
"field_validation": "unique: True, null=True, blank=True, max_length=255",
"path": "",
"foreign_key_of": "",
"is_fillable": true,
"enum_data": [],
"apply_filter": false,
"is_null": true,
"is_blank": true,
"is_unique": true,
"max_length": "255",
"relation_ship": "",
"upload_path": ""
},
{
"name": "",
"field_type": "text",
"field_validation": "unique=False, null=True, blank=True",
"path": "",
"foreign_key_of": "",
"is_fillable": true,
"enum_data": [],
"apply_filter": false,
"is_null": true,
"is_blank": true,
"is_unique": false,
"max_length": "",
"relation_ship": "",
"upload_path": ""
},
{
"name": "",
"field_type": "enum",
"field_validation": "",
"path": "",
"foreign_key_of": "",
"is_fillable": true,
"enum_data": [
"NodeJS",
"Express"
],
"apply_filter": false,
"is_null": true,
"is_blank": true,
"is_unique": false,
"max_length": "",
"relation_ship": "",
"upload_path": ""
},
{
"name": "",
"field_type": "integer",
"field_validation": "unique=False, null=True, blank=True",
"path": "",
"foreign_key_of": "",
"is_fillable": true,
"enum_data": [],
"apply_filter": true,
"is_null": true,
"is_blank": true,
"is_unique": false,
"max_length": "",
"relation_ship": "",
"upload_path": ""
},
{
"name": "",
"field_type": "email",
"field_validation": "unique=True, null=True, blank=True, max_length=255",
"path": "",
"foreign_key_of": "",
"is_fillable": true,
"enum_data": [],
"apply_filter": false,
"is_null": true,
"is_blank": true,
"is_unique": true,
"max_length": "255",
"relation_ship": "",
"upload_path": ""
},
{
"name": "",
"field_type": "float",
"field_validation": "null=True, blank=True, default=0.0",
"path": "",
"foreign_key_of": "",
"is_fillable": true,
"enum_data": [],
"apply_filter": false,
"is_null": true,
"is_blank": true,
"is_unique": false,
"max_length": "",
"relation_ship": "",
"upload_path": ""
},
{
"name": "",
"field_type": "boolean",
"field_validation": "default=False",
"path": "",
"foreign_key_of": "",
"is_fillable": true,
"enum_data": [],
"apply_filter": false,
"is_null": false,
"is_blank": false,
"is_unique": false,
"max_length": "",
"relation_ship": "",
"upload_path": ""
},
{
"name": "",
"field_type": "date",
"field_validation": "unique=False, null=True, blank=True",
"path": "",
"foreign_key_of": "",
"is_fillable": true,
"enum_data": [],
"apply_filter": false,
"is_null": true,
"is_blank": true,
"is_unique": false,
"max_length": "",
"relation_ship": "",
"upload_path": ""
},
{
"name": "",
"field_type": "datetime",
"field_validation": "auto_now=False",
"path": "",
"foreign_key_of": "",
"is_fillable": true,
"enum_data": [],
"apply_filter": false,
"is_null": false,
"is_blank": true,
"is_unique": true,
"max_length": "",
"relation_ship": "",
"upload_path": ""
},
{
"name": "",
"field_type": "foreign_key",
"field_validation": "on_delete=models.SET_NULL, null=True, blank=True, related_name='tutorial_id_user'",
"path": "",
"foreign_key_of": "tutorials",
"is_fillable": true,
"enum_data": [],
"apply_filter": false,
"is_null": true,
"is_blank": true,
"is_unique": false,
"max_length": "",
"relation_ship": "tutorials",
"upload_path": ""
},
{
"name": "",
"field_type": "image",
"field_validation": "null=True, blank=True",
"path": "images",
"foreign_key_of": "",
"is_fillable": true,
"enum_data": [],
"apply_filter": false,
"is_null": true,
"is_blank": true,
"is_unique": false,
"max_length": "",
"relation_ship": "",
"upload_path": "images"
},
{
"name": "",
"field_type": "file",
"field_validation": "null=True, blank=True",
"path": "",
"foreign_key_of": "",
"is_fillable": true,
"enum_data": [],
"apply_filter": false,
"is_null": true,
"is_blank": true,
"is_unique": false,
"max_length": "",
"relation_ship": "",
"upload_path": ""
},
{
"name": "",
"field_type": "slug",
"field_validation": "unique=True, null=True, blank=True",
"path": "",
"foreign_key_of": "",
"is_fillable": true,
"enum_data": [],
"apply_filter": false,
"is_null": true,
"is_blank": true,
"is_unique": true,
"max_length": "255",
"relation_ship": "",
"upload_path": ""
},
{
"name": "",
"field_type": "url",
"field_validation": "unique=True, null=True, blank=True",
"path": "",
"foreign_key_of": "",
"is_fillable": true,
"enum_data": [],
"apply_filter": false,
"is_null": true,
"is_blank": true,
"is_unique": true,
"max_length": "255",
"relation_ship": "",
"upload_path": ""
}
],
"extend_base": false,
"created_filter": false
}
const response = await crud_builder.builder.generateCodeBuilder(data)
The response will be json object as follows :
{
success: true,
code: 201,
message: 'Created',
data: { file_url: 'domainname/downloadfiles/node-model-crud.zip' }
}
Configurable props
- project_name - Name of your project.
- app_name - Name of your application.
- table_name - Sequelize schema/model name.
- create_model - This is boolean value (true/false) to create model file or not.
- create_view - This is boolean value (true/false) to create controller file or not.
- create_serializer - Set this default to false.
- create_unittest - Pass true/false to create test cases file.
- create_url - Boolean value to create routes file.
- create_swagger - Boolean value to create swagger file.
- create_instruction - Boolean value to create readme.md file.
- fields - Array of objects
- name - field name (name,age etc)
- field_type - Data type. Available data types are character, text, enum, integer, email, jsonfield, float, boolean, date, datetime, foreign_key, self, oneone, file, image, slug, url etc.
{ "name": "", "field_type": "url", "field_validation": "unique=True, null=True, blank=True", "path": "", "foreign_key_of": "", "is_fillable": true, "enum_data": [], "apply_filter": false, "is_null": true, "is_blank": true, "is_unique": true, "max_length": "255", "relation_ship": "", "upload_path": "" }
- field_validation - Field validation in string format
- path - upload folder path for files/images
- foreign_key_of - Mention the name of reference model in case of foreign key constraint.
- is_fillable - Validation for field is fillable or not.
- enum_data - Array of enum values by comma separated where field_type is enum.
- apply_filter - This is boolean value to apply the filter in get request or not.
- is_null - This is boolean value for field to be null or not.
- is_blank - Whether field is blanck or not (true/false).
- is_unique - For unique value validation.
- max_length - Max length of character and text data type.
- relation_ship - Name of your reference model.
- upload_path - Folder name for uploding images/files.
- extend_base - Boolean value for date filter.
- created_filter - Boolean for filter is created or not
Permission
- Create public folder under your root directory
- Create folders files and downloadfiles inside public folder
- Add read/write permission to public folder using below command
sudo chmod -R 777 public