// oms/src/src/models/messageStrategyModel.ts

import { Schema, model, Document } from "mongoose";
import { IMessageTemplate } from "./messageTemplateModel";

/**
 * 消息策略的接口定义。
 * templates 字段现在存储 MessageTemplate 的 ObjectId。
 */
export interface IMessageStrategy extends Document {
  name: string; // 策略名称，唯一标识
  description?: string; // 策略描述
  templates: (Schema.Types.ObjectId | IMessageTemplate)[]; // 绑定的消息模板 ObjectId 数组
  createdAt: Date; // Mongoose 自动生成
  updatedAt: Date; // Mongoose 自动生成
}

/**
 * Mongoose Schema for MessageStrategy
 */
const MessageStrategySchema: Schema = new Schema(
  {
    name: {
      type: String,
      required: true,
      unique: true,
      trim: true,
    },
    description: {
      type: String,
    },
    templates: [
      {
        type: Schema.Types.ObjectId,
        ref: "MessageTemplate", // 引用 MessageTemplate 模型
        default: [],
      },
    ],
  },
  {
    timestamps: true, // 自动添加 createdAt 和 updatedAt
  }
);

// 导出 MessageStrategy 模型
export const MessageStrategy = model<IMessageStrategy>("MessageStrategy", MessageStrategySchema);
