import { Column, Model, Table, DataType, BelongsTo, ForeignKey } from 'sequelize-typescript'; import { MedicationStatusEnum } from '../enums/medication-status.enum'; import { Medication } from './medication.model'; /** * 服药记录模型 */ @Table({ tableName: 't_medication_records', underscored: true, paranoid: false, // 使用软删除字段 deleted 而不是 deletedAt }) export class MedicationRecord extends Model { @Column({ type: DataType.STRING(50), primaryKey: true, comment: '记录唯一标识', }) declare id: string; @ForeignKey(() => Medication) @Column({ type: DataType.STRING(50), allowNull: false, comment: '关联的药物ID', }) declare medicationId: string; @Column({ type: DataType.STRING(50), allowNull: false, comment: '用户ID', }) declare userId: string; @Column({ type: DataType.DATE, allowNull: false, comment: '计划服药时间(UTC时间)', }) declare scheduledTime: Date; @Column({ type: DataType.DATE, allowNull: true, comment: '实际服药时间(UTC时间)', }) declare actualTime: Date; @Column({ type: DataType.STRING(20), allowNull: false, comment: '服药状态', }) declare status: MedicationStatusEnum; @Column({ type: DataType.TEXT, allowNull: true, comment: '备注', }) declare note: string; @Column({ type: DataType.DATE, defaultValue: DataType.NOW, comment: '创建时间', }) declare createdAt: Date; @Column({ type: DataType.DATE, defaultValue: DataType.NOW, comment: '更新时间', }) declare updatedAt: Date; @Column({ type: DataType.BOOLEAN, allowNull: false, defaultValue: false, comment: '软删除标记', }) declare deleted: boolean; // 关联关系 @BelongsTo(() => Medication, 'medicationId') declare medication: Medication; }