// oms/src/models/userPreferenceModel.ts
import mongoose, { Document, Schema } from "mongoose";

// 定义 UserPreference 文档的 TypeScript 接口
export interface IUserPreference extends Document {
  uid: string; // 用户唯一ID
  tag: string; // 内容标签
  count: number; // 使用次数或偏好强度
  createdAt: Date; // 创建时间 (由timestamps自动管理)
  updatedAt: Date; // 更新时间 (由timestamps自动管理)
}

// 定义 UserPreference Schema
const UserPreferenceSchema: Schema = new Schema(
  {
    uid: {
      type: String,
      required: true,
      // uid 需要索引，因为它与 tag 构成复合唯一索引
      index: true,
    },
    tag: {
      type: String,
      required: true,
      // tag 需要索引，因为它与 uid 构成复合唯一索引
      index: true,
    },
    count: {
      type: Number,
      required: true,
      default: 0, // 默认值为0
      min: 0, // 确保使用次数不为负
    },
  },
  {
    timestamps: true, // 自动添加 createdAt 和 updatedAt 字段
  }
);

// 为 uid 和 tag 字段创建复合唯一索引
// 这确保了每个 uid 和 tag 的组合都是唯一的，符合 "uid 和 tag 构成唯一索引" 的要求
UserPreferenceSchema.index({ uid: 1, tag: 1 }, { unique: true });

// 创建并导出 UserPreference Model
const UserPreference = mongoose.model<IUserPreference>(
  "UserPreference",
  UserPreferenceSchema
);
export default UserPreference;
