hapi-and-healthy
Version:
Health Status API for Hapi
45 lines (40 loc) • 1.49 kB
JavaScript
var Joi = require('@hapi/joi')
var schemaStatus = Joi.object().keys({
state: Joi.string(),
message: Joi.array().sparse(),
published: Joi.string()
})
// var schemaBasic = Joi.object().keys({
// service: Joi.object().keys({
// status: schemaStatus
// })
// })
var schema = {
createExpectedSchema: function (conf) {
var healthKeys = {
cpu_load: Joi.array().length(3).items(Joi.number()).required(),
mem_free: conf.human ?
Joi.string().required() : Joi.number().integer().required(),
mem_free_percent: conf.human ?
Joi.string().required() : Joi.number().min(0).max(1).required(),
mem_total: conf.human ?
Joi.string().required() : Joi.number().integer().required(),
os_uptime: conf.human ?
Joi.string().required() : Joi.number().required()
}
return Joi.object().keys({
service: Joi.object().keys({
env: Joi.string().required(),
id: Joi.string().required(),
custom: Joi.object().keys(conf.usage ? {
health: Joi.object().keys(healthKeys).required()
} : {}),
name: Joi.string().required(),
schema: Joi.string().required(),
status: schemaStatus.required(),
version: Joi.string().required()
}).required()
})
}
}
module.exports = schema