Package Exports
- nodejs-schema-rules
- nodejs-schema-rules/dist/cli.js
This package does not declare an exports field, so the exports above have been automatically detected and optimized by JSPM instead. If any package subpath is missing, it is recommended to post an issue to the original package (nodejs-schema-rules) to support the "exports" field. If that is not possible, create a JSPM override to customize the exports field for this package.
Readme
NodeJS Schema Rules
This tool automatically generates basic validation rules for popular libraries such as JOI, ValidatorJS and @vinejs/vine rules based on your database table schema. These rules serve as a convenient starting point, allowing you to refine and enhance them to suit your specific needs.
Installation
npm install nodejs-schema-rules
yarn add nodejs-schema-rules Then run ndVr init if you install the package globally otherwise npm run ndVr init for schema.config.js.
ndVr init
npm run ndVr initModify the schema.config.js
require("dotenv").config();
const schemaConfig = {
defaultDatabase: 'sqlite',
databases: {
postgres: {
host: 'localhost',
port: 5432,
user: 'postgres',
password: '123456',
database: 'testing'
},
mysql: {
host: 'localhost',
port: 3306,
user: 'root',
password: '123456',
database: 'schema_builder'
},
sqlite: { database: './schema_builder.db' }
},
skipColumns: [ 'created_at', 'updated_at', 'deleted_at' ],
validationSchemaType: 'joi'
};
module.exports = schemaConfig;Usage
The ndVr joi -t my_table -db mysql -c column1,column2 command generates validation rules for a specified database table and its columns. It creates a validation rules based on the chosen validation libraries like joi, "validatorjs", "vine". The generated rules can be used to enforce data integrity and validate incoming requests in your application.
Options:
- -db, --database: Specify the type of database (e.g.,
mysql,postgres,sqlite). - -t, --table: Specify the name of the database table for which rules should be generated.
- -c, --columns: Specify the column names of the table to generate rules for.
- -h, --help: Display help for the command.
Examples:
Generate rules for a MySQL table named
userswith columnsidandname:npm run ndVr joi -t users -db mysql -c id,name
Generate rules for a PostgreSQL table named
userswith a validation libraryvalidatorJs:npm run ndVr validatorJs -t users -db mysql -c id,name
as same as for sqlite.
Let's say you've the table structure:
CREATE TABLE data_types (
id INTEGER PRIMARY KEY,
name TEXT,
age INTEGER,
height REAL,
is_student BOOLEAN,
birthdate DATE,
registration_timestamp TIMESTAMP,
description BLOB
created_at TIMESTAMP,
updated_at TIMESTAMP
);Generate rules for a whole table
Now if you run:
npm run ndVr joi -db sqlite -t data_typesYou'll get:
🚀 Schema Base Validation rules for "joi" generated! 🚀
Copy and paste these rules into your validation location, such as controller, form request, or any applicable place 😊
______________________________________________________________________________________________________________________
{
name: Joi.string().required(),
age: Joi.integer().min(-9223372036854775808).max(9223372036854775807).required(),
height: Joi.number().required(),
is_student: Joi.required(),
birthdate: Joi.date().required(),
registration_timestamp: Joi.required(),
description: Joi.required(),
}
Generate rules for specific columns
You can also explicitly specify the columns:
npm run ndVr joi -db sqlite -t data_types -c name,ageWhich gives you:
🚀 Schema Base Validation rules for "joi" generated! 🚀
Copy and paste these rules into your validation location, such as controller, form request, or any applicable place 😊
______________________________________________________________________________________________________________________
{
name: Joi.string().required(),
age: Joi.integer().min(-9223372036854775808).max(9223372036854775807).required(),
}
Always skip columns
To always skip columns add it in the schema-config.js file, under skipColumns attribute.
skipColumns: (process.env.SKIP_COLUMNS || 'created_at,updated_at,deleted_at').split(',')Supported Drivers
Supported database drivers are MySQL, PostgreSQL, and SQLite.
Validation rules may vary based on the selected driver due to differences in supported data types and range specifications.
Testing
npm testAuthor
👤 Md Tasmidur Rahman tasmidurrahman@gmail.com (https://tasmidur.netlify.app)
🤝 Contributing
Contributions, issues and feature requests are welcome!
Feel free to check issues page
Show your support
Give a ⭐️ if this project helped you!
License
The MIT License (MIT). Please see License File for more information.