UNPKG

@grouparoo/core

Version:
99 lines (98 loc) 4.38 kB
"use strict"; var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) { var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; return c > 3 && r && Object.defineProperty(target, key, r), r; }; var __metadata = (this && this.__metadata) || function (k, v) { if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v); }; Object.defineProperty(exports, "__esModule", { value: true }); exports.GroupMember = void 0; const sequelize_typescript_1 = require("sequelize-typescript"); const Group_1 = require("./Group"); const GrouparooRecord_1 = require("./GrouparooRecord"); const apiData_1 = require("../modules/apiData"); const commonModel_1 = require("../classes/commonModel"); let GroupMember = class GroupMember extends commonModel_1.CommonModel { constructor() { super(...arguments); this.uniqueIdentifier = ["recordId", "groupId"]; } idPrefix() { return "mem"; } async apiData() { return { recordId: this.recordId, groupId: this.groupId, createdAt: apiData_1.APIData.formatDate(this.createdAt), updatedAt: apiData_1.APIData.formatDate(this.updatedAt), removedAt: apiData_1.APIData.formatDate(this.removedAt), }; } // --- Class Methods --- // static async ensureModelMatch(instance) { const group = await instance.$get("group", { scope: null }); const record = await instance.$get("record", { scope: null }); if (record.modelId !== group.modelId) { throw new Error(`models ${group.modelId} and ${record.modelId} do not match`); } } static async ensureModelsMatch(instances) { const groups = await Group_1.Group.findAll({ where: { id: instances.map((i) => i.groupId) }, }); const records = await GrouparooRecord_1.GrouparooRecord.findAll({ where: { id: instances.map((i) => i.recordId) }, }); for (const i of instances) { const group = groups.find((g) => g.id === i.groupId); const record = records.find((r) => r.id === i.recordId); if (record.modelId !== group.modelId) { throw new Error(`models ${group.modelId} and ${record.modelId} do not match`); } } } }; __decorate([ (0, sequelize_typescript_1.AllowNull)(false), (0, sequelize_typescript_1.ForeignKey)(() => GrouparooRecord_1.GrouparooRecord), sequelize_typescript_1.Column, __metadata("design:type", String) ], GroupMember.prototype, "recordId", void 0); __decorate([ (0, sequelize_typescript_1.AllowNull)(false), (0, sequelize_typescript_1.ForeignKey)(() => Group_1.Group), sequelize_typescript_1.Column, __metadata("design:type", String) ], GroupMember.prototype, "groupId", void 0); __decorate([ sequelize_typescript_1.Column, __metadata("design:type", Date) ], GroupMember.prototype, "removedAt", void 0); __decorate([ (0, sequelize_typescript_1.BelongsTo)(() => Group_1.Group), __metadata("design:type", Group_1.Group) ], GroupMember.prototype, "group", void 0); __decorate([ (0, sequelize_typescript_1.BelongsTo)(() => GrouparooRecord_1.GrouparooRecord), __metadata("design:type", GrouparooRecord_1.GrouparooRecord) ], GroupMember.prototype, "record", void 0); __decorate([ sequelize_typescript_1.BeforeCreate, __metadata("design:type", Function), __metadata("design:paramtypes", [GroupMember]), __metadata("design:returntype", Promise) ], GroupMember, "ensureModelMatch", null); __decorate([ sequelize_typescript_1.BeforeBulkCreate, __metadata("design:type", Function), __metadata("design:paramtypes", [Array]), __metadata("design:returntype", Promise) ], GroupMember, "ensureModelsMatch", null); GroupMember = __decorate([ (0, sequelize_typescript_1.Table)({ tableName: "groupMembers", paranoid: false }) ], GroupMember); exports.GroupMember = GroupMember;