import Joi from "@hapi/joi"; const Rules = { model: "Cars", crud: { read: ["admin", "user"], write: ["admin"], edit: ["admin"], delete: ["admin"] }, includes: [ { collection: "Brand", requiredRole: ["admin", "user"] }, { collection: "Colors" } ], format: { user: { id: "id", model: "model", Brand: { name: "name" } } }, itemId: "carId", validate: { create: Joi.object({ name: Joi.string().required(), colorsId: Joi.array().items(Joi.number().integer()), active: Joi.boolean(), year: Joi.number() .integer() .required(), brandId: Joi.number().integer() }), update: Joi.object({ name: Joi.string(), year: Joi.number().integer(), colorsId: Joi.array().items(Joi.number().integer()) }), item: Joi.object({ carId: Joi.number().required() }), list: Joi.object({ weirdfilter: Joi.string(), "name.lk": Joi.string(), name: Joi.string(), year: Joi.number().integer(), "year.lte": Joi.number().integer(), "year.gte": Joi.number().integer(), limit: Joi.number() .integer() .min(1) .max(50), page: Joi.number() .integer() .min(1), sort: Joi.string() .valid("id", "name", "createdAt", "updatedAt") .only(), order: Joi.string() .valid("asc", "desc") .only() }) .with("year.lte", "year.gte") .with("year.gte", "year.lte") .with("limit", "page") .with("page", "limit") .with("sort", "order") .with("order", "sort") }, restrictOn: { list: [ { roles: ["user"], type: "raw", field: "active", value: "true" } ], item: [ { roles: ["user"], type: "raw", field: "active", value: "true" } ] }, override: { list: { filters: { weirdfilter: { $or: [ { active: true }, { year: 2003 } ] }, "name.lk": { name: { $like: "%_TERM_%" } }, "year.lte": { year: { $lte: "_TERM_" } }, "year.gte": { year: { $gte: "_TERM_" } } } } }, belongsToMany: { colorsId: "Colors" } }; export default Rules;