"use strict";
// oms/src/models/messageActivityModal.ts
Object.defineProperty(exports, "__esModule", { value: true });
exports.MessageActivity = void 0;
const mongoose_1 = require("mongoose");
// Mongoose schema for MessageActivity
const messageActivitySchema = new mongoose_1.Schema({
    // 此名称用于标识此通知活动，不会向用户显示
    name: {
        type: String,
        required: true,
        unique: true,
        trim: true,
    },
    //消息模板， 连接到消息模版表MessageTemplate， 实际上就是确定消息标题和文本
    templateId: {
        type: mongoose_1.Schema.Types.ObjectId,
        ref: "MessageTemplate", // Reference to the MessageTemplate model
    },
    // 通知图片url
    image: {
        type: String,
    },
    // 消息是否允许展开，有图片的情况下有效
    bigger: {
        type: Boolean,
        default: false,
    },
    // 定义客户端收到消息后的行为，如 go/app ， open/art 等
    action: {
        type: String,
        default: "go/app",
    },
    // 消息参数
    param: {
        type: String,
    },
    // 消息扩展参数
    extend: {
        type: String,
    },
    // 推送策略, 系统采用硬编码的形式，预制了若干推送策略，此处的策略编号将对应不同的用户定位逻辑， 默认0则表示不采用任何系统硬编码策略。 若指定系统策略，则系统策略有限，下面的用户筛选条件，推送时间计划可能将会忽略作废
    strategy: {
        type: Number,
        default: 0,
    },
    // 目标用户筛选条件，存储为原生数组
    filter: [
        {
            field: { type: String, required: true },
            operator: { type: String, required: true },
            value: mongoose_1.Schema.Types.Mixed, // 存储任意类型的值
        },
    ],
    // 计划推送时间
    scheduleAt: {
        type: Date,
    },
    publishedAt: { type: Date }, // 发布时间
    completedAt: { type: Date }, // 完成/中止时间
    lastPubDate: { type: Date }, // 上次推送日期
    // 是否周期每天推送
    everyday: {
        type: Boolean,
        default: false,
    },
    // 消息通知活动状态：0-未发布, 1-已发布（进行中）, 2-已完成, 3-已中止。
    status: {
        type: Number,
        default: 0, // 0-unreleased; 1-published; 2-completed
    },
    // 活动描述
    description: {
        type: String,
    },
}, {
    timestamps: true, // Automatically adds createdAt and updatedAt fields
});
exports.MessageActivity = (0, mongoose_1.model)("MessageActivity", messageActivitySchema);
