package com.njzscloud.common.sichen.support;

import com.njzscloud.common.sichen.contant.TaskLogLevel;

import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;

import static java.lang.annotation.ElementType.METHOD;

/**
 * 将函数标记为定时任务执行函数，然后将类注册为 Spring Bean 即可，如果任务配置保存在数据库中，则所有参数都不用填，仅将方法作为执行函数
 */
@Target({METHOD})
@Retention(RetentionPolicy.RUNTIME)
public @interface Task {
    /**
     * 任务 Id
     */
    long id() default 0;

    /**
     * 名称，默认为方法的全限定名
     */
    String name() default "";

    /**
     * 调度表达式
     */
    String cron() default "";

    /**
     * 周期，与表达式二选一，0 无效，都有值将以表达式为主
     */
    int period() default 0;

    /**
     * 日志等级
     */
    TaskLogLevel logLevel() default TaskLogLevel.INFO;

    /**
     * 备注
     */
    String memo() default "";
}
