import { Column, ForeignKey, BelongsTo, Default, IsIn, Table, DataType, Scopes, } from "sequelize-typescript"; import Collection from "./Collection"; import User from "./User"; import BaseModel from "./base/BaseModel"; import Fix from "./decorators/Fix"; @Scopes(() => ({ withUser: { include: [ { association: "user", }, ], }, withCollection: { include: [ { association: "collection", }, ], }, })) @Table({ tableName: "collection_users", modelName: "collection_user" }) @Fix class CollectionUser extends BaseModel { @Default("read_write") @IsIn([["read", "read_write", "maintainer"]]) @Column permission: string; // associations @BelongsTo(() => Collection, "collectionId") collection: Collection; @ForeignKey(() => Collection) @Column(DataType.UUID) collectionId: string; @BelongsTo(() => User, "userId") user: User; @ForeignKey(() => User) @Column(DataType.UUID) userId: string; @BelongsTo(() => User, "createdById") createdBy: User; @ForeignKey(() => User) @Column(DataType.UUID) createdById: string; } export default CollectionUser;