/*! * Copyright (c) 2024 PLANKA Software GmbH * Licensed under the Fair Use License: https://github.com/plankanban/planka/blob/master/LICENSE.md */ /** * BoardMembership.js * * @description :: A model definition represents a database table/collection. * @docs :: https://sailsjs.com/docs/concepts/models-and-orm/models */ const Roles = { EDITOR: 'editor', VIEWER: 'viewer', }; const SHARED_RULES = { role: {}, canComment: { setTo: null }, }; const RULES_BY_ROLE = { [Roles.EDITOR]: { canComment: { setTo: null }, }, [Roles.VIEWER]: { canComment: { defaultTo: false }, }, }; module.exports = { Roles, SHARED_RULES, RULES_BY_ROLE, attributes: { // ╔═╗╦═╗╦╔╦╗╦╔╦╗╦╦ ╦╔═╗╔═╗ // ╠═╝╠╦╝║║║║║ ║ ║╚╗╔╝║╣ ╚═╗ // ╩ ╩╚═╩╩ ╩╩ ╩ ╩ ╚╝ ╚═╝╚═╝ role: { type: 'string', isIn: Object.values(Roles), required: true, }, canComment: { type: 'boolean', allowNull: true, columnName: 'can_comment', }, // ╔═╗╔╦╗╔╗ ╔═╗╔╦╗╔═╗ // ║╣ ║║║╠╩╗║╣ ║║╚═╗ // ╚═╝╩ ╩╚═╝╚═╝═╩╝╚═╝ // ╔═╗╔═╗╔═╗╔═╗╔═╗╦╔═╗╔╦╗╦╔═╗╔╗╔╔═╗ // ╠═╣╚═╗╚═╗║ ║║ ║╠═╣ ║ ║║ ║║║║╚═╗ // ╩ ╩╚═╝╚═╝╚═╝╚═╝╩╩ ╩ ╩ ╩╚═╝╝╚╝╚═╝ // Denormalization projectId: { model: 'Project', required: true, columnName: 'project_id', }, boardId: { model: 'Board', required: true, columnName: 'board_id', }, userId: { model: 'User', required: true, columnName: 'user_id', }, }, tableName: 'board_membership', };