Skip to content

Instantly share code, notes, and snippets.

@damiancipolat
Created September 23, 2020 06:05
Show Gist options
  • Save damiancipolat/ca1eda9da525d0deddd8d8102b8e922f to your computer and use it in GitHub Desktop.
Save damiancipolat/ca1eda9da525d0deddd8d8102b8e922f to your computer and use it in GitHub Desktop.
An example of a full client schema validation
const Joi = require('joi');
//Schemas.
const googleSchema = Joi.object({
avatar:Joi.string().uri(),
email:Joi.string().email(),
name:Joi.string()
});
const blockedSchema = Joi.object({
motive:Joi.string(),
date:Joi.date()
});
const tycSchema = Joi.object({
date:Joi.date(),
version:Joi.string()
});
const phoneSchema= Joi.object({
country:Joi.string(),
number:Joi.string(),
validatedAt:Joi.date()
});
const legalSchema = Joi.object({
fatca:Joi.boolean(),
ddjj:Joi.boolean(),
pep:Joi.boolean()
});
const accountSchema = Joi.object({
opRerenceId:Joi.string()
});
const dniSchema = Joi.object({
firstName:Joi.string(),
lastName:Joi.string(),
number:Joi.string(),
address:Joi.string(),
gender:Joi.string(),
birthdate:Joi.date(),
country:Joi.string(),
nationality:Joi.string(),
expiration:Joi.date(),
fiscalNumber:Joi.string()
});
const clientschema = Joi.object({
client_id:Joi.string(),
email:Joi.string().email(),
createdFrom:Joi.string().valid('social','email'),
status:Joi.string().valid('active','inactive','pending','suspended'),
google:googleSchema,
blocked:blockedSchema,
sygnedTyc:tycSchema,
phone:phoneSchema,
legal:legalSchema,
document:dniSchema,
acccount:accountSchema
});
//Examples.
const tmpDni ={
firstName:'Damian',
lastName:'Cipolat',
number:'332955215',
address:'Opa opa',
gender:'M',
birthdate:'1987-10-06',
country:'ARGENTINA',
nationality:'ARGENTINA',
expiration:'2987-10-06',
fiscalNumber:'2033295515'
};
const tmpAccount={
opRerenceId:"123124343243243232324"
};
const tmpLegal = {
fatca:false,
ddjj:false,
pep:false
};
const tmpPhone={
country:"+54",
number:"1166587382",
validatedAt:"2019-01-'01"
};
const tmpTyc={
date:"01/01/01",
version:"1.0"
};
const tmpBloq ={
motive:"dddddddddd",
date:"2010-01-01"
};
const tmpGoogle= {
avatar:"www.damian.com",
email:"damian.cipolat@gmail.com",
name:"sssssssssssss"
};
let resu = dni.validate(tmpDni);
console.log(resu);
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment