import { Attributes, FindOptions } from "@sequelize/core" import { Flashcard, User } from "@/models" import { ALL_RECORDS_SCOPE, PolicyFactory } from "@/policies/base-policy" import { Path } from "@/utils/deep-pick" export class FlashcardsPolicy extends PolicyFactory(Flashcard) { show(): boolean { return true } create(): boolean { return true } update(): boolean { return this.user.id === this.record.creatorId } destroy(): boolean { return this.user.id === this.record.creatorId } permittedAttributes(): Path[] { return ["flashcardDeckId", "cardType", "front", "back"] as (keyof Attributes)[] } permittedAttributesForCreate(): Path[] { return [...this.permittedAttributes()] } permittedAttributesForUpdate(): Path[] { return [...this.permittedAttributes()] } static policyScope(_user: User): FindOptions> { return ALL_RECORDS_SCOPE } } export default FlashcardsPolicy