package com.easyagents.scheduler;

import java.time.Instant;
import java.util.Objects;

/**
 * 调度任务定义及当前运行状态的只读视图。
 *
 * @param definition 任务定义
 * @param status 当前状态
 * @param previousFireTime 上一次触发时间，可为空
 * @param nextFireTime 下一次触发时间，可为空
 */
public record ScheduleView(
    ScheduleDefinition definition,
    ScheduleStatus status,
    Instant previousFireTime,
    Instant nextFireTime
) {

    /**
     * 校验并创建任务视图。
     *
     * @throws NullPointerException 定义或状态为空时抛出
     */
    public ScheduleView {
        definition = Objects.requireNonNull(definition, "definition must not be null");
        status = Objects.requireNonNull(status, "status must not be null");
    }
}
