from tortoise import fields

from zhenxun.services.db_context import Model


class ScheduledJob(Model):
    id = fields.IntField(pk=True, generated=True, auto_increment=True)
    """自增id"""
    bot_id = fields.CharField(
        255, null=True, default=None, description="任务关联的Bot ID"
    )
    """任务关联的Bot ID"""
    plugin_name = fields.CharField(255, description="插件模块名")
    """插件模块名"""
    group_id = fields.CharField(
        255,
        null=True,
        description="群组ID, '__ALL_GROUPS__' 表示所有群, 为空表示全局任务",
    )
    """群组ID, 为空表示全局任务"""
    trigger_type = fields.CharField(
        max_length=20, default="cron", description="触发器类型 (cron, interval, date)"
    )
    """触发器类型 (cron, interval, date)"""
    trigger_config = fields.JSONField(description="触发器具体配置")
    """触发器具体配置"""
    job_kwargs = fields.JSONField(
        default=dict, description="传递给任务函数的额外关键字参数"
    )
    """传递给任务函数的额外关键字参数"""
    is_enabled = fields.BooleanField(default=True, description="是否启用")
    """是否启用"""
    create_time = fields.DatetimeField(auto_now_add=True)
    """创建时间"""

    class Meta:  # pyright: ignore [reportIncompatibleVariableOverride]
        table = "scheduled_jobs"
        table_description = "通用定时任务表"
