yup-sql
v2.1.1
Published
Create Yup validation code for MySQL databases
Downloads
48
Maintainers
Readme
yup-sql
Point it at your local database, and it spits out a Yup object validator.
This is a straight fork of joi-sql
Install
npm install yup-sql
(npm install -g yup-sql
if you want to use it from the command-line)
The only "breaking" change from 1.x to 2.x is that support for versions of node older than 12 was dropped.
Usage
CLI
yup-sql --host=localhost --user=root --password=abc123 --schema=awesomedb --table=customer --camel
host
, user
, password
, and camel
are all optional. schema
and table
are not.
If camel
is set, then column names are converted to camel case identifiers.
Spits out something like:
yup.object({
projectId: yup.number().integer().min(0).max(4294967295).nullable(false),
contactId: yup.number().integer().min(0).max(4294967295).nullable(false),
dateCreated: yup.date().nullable(false),
engineerId: yup.number().integer().min(0).max(4294967295).nullable(true),
name: yup.string().max(200).nullable(false).default(''),
engineeringProject: yup.boolean().nullable(false).default(1),
printingProject: yup.boolean().nullable(false).default(1),
activeProjectStateId: yup.number().integer().min(0).max(4294967295).nullable(false),
startDate: yup.date().nullable(true),
done: yup.boolean().nullable(false).default(0),
doneDate: yup.date().nullable(true),
deadReason: yup.string().max(65535).nullable(true).default(''),
quotedEngineeringHours: yup.number().lessThan(10000).nullable(true).default(0),
actualEngineeringHours: yup.number().lessThan(10000).nullable(true).default(0),
engineeringDueDate: yup.date().nullable(true),
printParts: yup.string().max(65535).nullable(true),
printQuantity: yup.number().integer().max(16777215).nullable(true).default(1),
printTimeHours: yup.number().lessThan(10000).nullable(true).default(0),
printDueDate: yup.date().nullable(true),
paymentReceived: yup.boolean().nullable(false).default(0),
contactDate: yup.date().nullable(true),
replyDate: yup.date().nullable(true),
quoteDate: yup.date().nullable(true),
followUpDate: yup.date().nullable(true),
notes: yup.string().max(65535).ensure().nullable(false),
version: yup.number().integer().min(0).max(4294967295).nullable(false).default(1),
updatedAt: yup.date().nullable(false),
isFinished: yup.string().oneOf(['False','True']).nullable(false)
})
Programmatic
Returns a promise that resolves to a string containing the code snippet above.
const yupSql = require('yup-sql')
yupSql({
host: 'localhost',
user: 'root',
password: 'abc123',
schema: 'awesomedb',
table: 'customer',
camel: true
}).then(result => {
typeof result // => 'string'
})
You may also pass in an optional connection
property which must be a mysql
connection instance.
Pull requests welcome.