import Sequelize from "sequelize"; import { validateFindOptions, validateMutation } from "@vostro/c2-utils/lib/auth"; import { C2Utils } from '@vostro/c2-utils/lib/types'; export default { name: "RolePermission", comment: "This is a role permission table.", comments: { fields: { level: "This is a selection of level of what role permission will be.", role: "role permisssion belongsTo role", permission: "roler permission belongsTo permission", roleId: "target for role", permissionId: "target for permission", }, }, define: { level: { type: Sequelize.ENUM, values: ["global", "self"], allowNull: false, defaultValue: "self", comment: "This is a selection of level of what role permission will be.", }, }, override: {}, relationships: [{ type: "belongsTo", model: "Role", name: "role", options: { as: "role", foreignKey: "roleId", }, }, { type: "belongsTo", model: "Permission", name: "permission", options: { as: "permission", foreignKey: "permissionId", }, }], options: { tableName: "role-permissions", indexes: [{ unique: true, fields: ["roleId", "permissionId"], }], hooks: { beforeFind: [async function beforeFind(options: C2Utils.FindOptions) { return validateFindOptions("RolePermission", options, undefined, undefined, true); }], beforeCreate: [async function beforeCreate(instance: any, options: C2Utils.FindOptions) { return validateMutation("RolePermission", "create", options, instance, undefined, true); }], beforeUpdate: [async function beforeUpdate(instance: any, options: C2Utils.FindOptions) { return validateMutation("RolePermission", "update", options, instance, undefined, true); }], beforeDestroy: [async function beforeDestroy(instance: any, options: C2Utils.FindOptions) { return validateMutation("RolePermission", "destroy", options, instance, undefined, true); }], }, }, };