import { BelongsTo, Column, Default, ForeignKey, IsIn, Table, DataType, Scopes, } from "sequelize-typescript"; import { CollectionPermission } from "@shared/types"; import Collection from "./Collection"; import Group from "./Group"; import User from "./User"; import BaseModel from "./base/BaseModel"; import Fix from "./decorators/Fix"; @Scopes(() => ({ withGroup: { include: [ { association: "group", }, ], }, withCollection: { include: [ { association: "collection", }, ], }, })) @Table({ tableName: "collection_groups", modelName: "collection_group" }) @Fix class CollectionGroup extends BaseModel { @Default(CollectionPermission.ReadWrite) @IsIn([Object.values(CollectionPermission)]) @Column(DataType.STRING) permission: CollectionPermission; // associations @BelongsTo(() => Collection, "collectionId") collection: Collection; @ForeignKey(() => Collection) @Column(DataType.UUID) collectionId: string; @BelongsTo(() => Group, "groupId") group: Group; @ForeignKey(() => Group) @Column(DataType.UUID) groupId: string; @BelongsTo(() => User, "createdById") createdBy: User; } export default CollectionGroup;