mirror of https://github.com/cupcakearmy/ora.git
44 lines
1.2 KiB
JavaScript
44 lines
1.2 KiB
JavaScript
import Joi from 'joi'
|
|
|
|
export const DurationTupleValidator = Joi.array().length(2).ordered(Joi.number(), Joi.string())
|
|
|
|
export const LimitValidator = Joi.object({
|
|
host: Joi.string().domain(),
|
|
id: Joi.number().optional(),
|
|
rules: Joi.array().items(
|
|
Joi.object({
|
|
limit: DurationTupleValidator,
|
|
every: DurationTupleValidator,
|
|
})
|
|
),
|
|
})
|
|
|
|
export const LogValidator = Joi.object({
|
|
host: Joi.string(),
|
|
id: Joi.number().optional(),
|
|
seconds: Joi.number(),
|
|
timestamp: Joi.date(),
|
|
})
|
|
|
|
export const SettingsValidator = Joi.object({
|
|
lastActivity: Joi.date()
|
|
.default(() => new Date())
|
|
.optional(), // Last user activity, to calculate idle time
|
|
retention: Joi.number().default(90).optional(), // Days to keep logs
|
|
idleTimeout: DurationTupleValidator.default(5).optional(), // Idle timeout in minutes
|
|
})
|
|
|
|
export const DBValidator = Joi.object({
|
|
limits: Joi.array().items(LimitValidator),
|
|
logs: Joi.array().items(LogValidator),
|
|
settings: SettingsValidator.optional(),
|
|
})
|
|
|
|
export function checkForErrors(validator, data) {
|
|
const validated = validator.validate(data, { presence: 'required' })
|
|
if (validated.error) {
|
|
console.error('Validation error', validated.error)
|
|
}
|
|
return validated.error
|
|
}
|