import { getModelForClass, prop, DocumentType, Ref, modelOptions, } from '@typegoose/typegoose'; import { Base, TimeStamps } from '@typegoose/typegoose/lib/defaultClasses'; import type { Types } from 'mongoose'; import { User } from '../../../models/user/user'; @modelOptions({ options: { customName: 'p_tasks', }, }) export class Task extends TimeStamps implements Base { _id: Types.ObjectId; id: string; /** * 创建者 */ @prop({ ref: () => User, index: true, }) creator: Ref; /** * 指定人 */ @prop({ ref: () => User, index: true, }) assignee?: Ref[]; /** * 标题 */ @prop() title: string; /** * 描述 */ @prop() description?: string; /** * 已完成 */ @prop({ default: false, }) done: boolean; /** * 过期时间 */ @prop() expiredAt?: Date; // TODO: 增加消息提醒 } export type TaskDocument = DocumentType; const model = getModelForClass(Task); export type TaskModel = typeof model; export default model;