joi-sequelize
A lib to automaticaly create joi validation schemas from sequelize models.
A lots of Hapi projects uses Sequelize to handle database conection, data modeling and manipulation, and Joi to validate its requests and responses. In this case is common to use quite the same schema for both libraries. Hence that it is a fertile scenario to create inconsistency between both schemas, that will be likely rearranged every time the database models change. So why not use the database to auto generate joi schemas, and remove the unnecessary validation in especifica routes. This is the main idea behind joi-sequelize.
Usage
Model example
'use strict'; // jshint ignore:line var config = bcrypt = salt = configsaltGen; module { var User = sequelize; return User;};
Loading models
'use strict'; var fs = path = Sequelize = JoiSequelize = basename = path env = processenvNODE_ENV || 'development' log = !processenvLOG || processenvLOG === 'false' ? false : true config = env db sequelize; { db = {}; configlogging = env === 'development' && log ? consolelog : false; if configuse_env_variable sequelize = processenvconfiguse_env_variable; else sequelize = configdatabase configusername configpassword config; dbsequelize = sequelize; dbSequelize = Sequelize; dbJS = {}; fs ; Object; Object; return db;} moduleexports = db || ;
Apply joi-sequelize generated schemas on routes
'use strict'; const Hapi = ;const db = ;const JS = dbJS; const server = ;server; server; serverstart { if err throw err; console;};
Other functions
Omit
Return a joi object with all items except the ones passed as arguments
JSUser;
Pick
Return a joi object with all fields passed as arguments
JSUser;
Include
Return a joi object with like JS.User.joi() but with field picture of joi type .any()
JSUser;
withRequired
Get joi objects that have property allowNull:false
as required
JSUser;
withRequiredOmit
Same as withRequired but omiting the fields passed as arguments
JSUser; // useful on create routes payloads
withRequiredPick
Same as withRequired but omiting the fields passed as arguments
JSUser; // useful on get, update, delete routes with id param