db/models/userAccess.jsjavascript
"use strict";
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.AccessRole = void 0;
const sequelize_1 = require("sequelize");
const db_1 = __importDefault(require("../db"));
var AccessRole;
(function (AccessRole) {
AccessRole["COACH"] = "coach";
AccessRole["ASSISTANT"] = "assistant";
AccessRole["ATHLETE"] = "athlete";
})(AccessRole || (exports.AccessRole = AccessRole = {}));
/**
* @openapi
* components:
* schemas:
* UserAccess:
* type: object
* required:
* - id
* - ownerUserId
* - childUserId
* - role
* properties:
* id:
* type: string
* format: uuid
* ownerUserId:
* type: string
* format: uuid
* childUserId:
* type: string
* format: uuid
* role:
* type: string
* enum:
* - coach
* - assistant
* - athlete
* accepted:
* type: boolean
* default: false
* enabled:
* type: boolean
* default: true
*/
/**
* @typedef UserAccess
* @property {UUID} id
* @property {UUID} ownerUserId
* @property {UUID} childUserId
* @property {AccessRole} role
* @property {boolean} enabled
* @property {Date} createdAt
* @property {Date} updatedAt
* @memberof module:Models
*/
class UserAccess extends sequelize_1.Model {
}
UserAccess.init({
id: {
type: sequelize_1.DataTypes.UUID,
defaultValue: sequelize_1.DataTypes.UUIDV4,
primaryKey: true,
},
role: {
type: sequelize_1.DataTypes.ENUM(...Object.values(AccessRole)),
allowNull: false,
defaultValue: AccessRole.ATHLETE,
validate: {
isValidAccessRole(value) {
if (!Object.values(AccessRole).includes(value)) {
throw new Error("Invalid access role");
}
},
},
},
accepted: {
type: sequelize_1.DataTypes.BOOLEAN,
allowNull: false,
defaultValue: false,
},
enabled: {
type: sequelize_1.DataTypes.BOOLEAN,
allowNull: false,
defaultValue: true,
},
createdAt: sequelize_1.DataTypes.DATE,
updatedAt: sequelize_1.DataTypes.DATE,
}, {
sequelize: db_1.default,
indexes: [
{
unique: true,
fields: ["ownerUserId", "childUserId"],
},
],
});
exports.default = UserAccess;