import { type Slug, Slugs } from "@/lib/slug"; import { Model, table, column, loadInterceptor } from "@/lib/Model"; import { Questline } from "@/lib/Questline"; @table("quests") export class Quest extends Model { @column() public name!: string; @column() public completed!: boolean; @column() public claimed!: boolean; @column("sort_order") public sortOrder: number | undefined; @column("coins_reward") public coinsReward!: number; @column("questline_id") public questlineId!: DbId; public readonly slug: Slug; public constructor(id: DbId) { super(id); this.slug = Slugs.encode(this.id); } public get questline() { return new Questline(this.questlineId); } /// static load(id: DbId): Quest { return new Proxy(new Quest(id), loadInterceptor); } static requiredFields: { name: string; coinsReward: number; questlineId: DbId; completed: boolean; claimed: boolean; } | null = null; static build(obj: Exclude) { return Model.builder(this, obj); } }