stark-node-crud-builder

0.0.3 • Public • Published

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

/stark-node-crud-builder/

    Package Sidebar

    Install

    npm i stark-node-crud-builder

    Weekly Downloads

    1

    Version

    0.0.3

    License

    MIT

    Unpacked Size

    92.8 kB

    Total Files

    18

    Last publish

    Collaborators

    • starkreact