All files / framework/src/api/db/model/access RoleModel.js

100% Statements 8/8
100% Branches 0/0
100% Functions 3/3
100% Lines 8/8
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 521x 1x 1x 1x               171x                 1x                         2x                                 1x  
const BasicModel = require('../BasicModel');
const PermissionModel = require('./PermissionModel');
const TABLES = require('../../../../constants/tables');
const _ = require('lodash');
 
/**
 * RoleModel implementation of default role database entity
 * @augments BasicModel
 */
class RoleModel extends BasicModel {
    static get tableName() {
        return TABLES.ROLE_TABLE_NAME;
    }
 
    /**
     * JsonSchema getter merge role schema with super class schema
     * @type {Object}
     * @property {string} name role name
     */
    static get jsonSchema() {
        return _.merge(super.jsonSchema, {
            properties: {
                name: { type: 'string' },
            },
        });
    }
 
    /**
     * Role relations mapping
     * @type {Object}
     * @property {PermissionModel[]} permissions role's permissions
     */
    static get relationMappings() {
        return {
            permissions: {
                relation: this.ManyToManyRelation,
                modelClass: PermissionModel,
                join: {
                    from: `${TABLES.ROLE_TABLE_NAME}.id`,
                    through: {
                        from: `${TABLES.ROLE_TO_PERMISSION_TABLE_NAME}.roleId`,
                        to: `${TABLES.ROLE_TO_PERMISSION_TABLE_NAME}.permissionId`,
                    },
                    to: `${TABLES.PERMISSION_TABLE_NAME}.id`,
                },
            },
        };
    }
}
 
module.exports = RoleModel;