package com.ycwl.basic.device.operator;

import com.ycwl.basic.device.IDeviceCommon;
import com.ycwl.basic.device.entity.common.FileObject;
import com.ycwl.basic.device.entity.common.VideoContinuityResult;

import java.util.Date;
import java.util.List;

public interface IDeviceStorageOperator extends IDeviceCommon {
    void loadConfig(String configJson);

    /**
     * 获取指定时间范围内的文件列表
     *
     * @param startDate 开始时间
     * @param endDate   结束时间
     * @return
     */
    List<FileObject> getFileListByDtRange(Date startDate, Date endDate);

    /**
     * 删除指定日期之前的文件,不包含指定的日期当天
     *
     * @param date 指定日期,不包含指定日期当天
     * @return
     */
    boolean removeFilesBeforeDate(Date date);

    /**
     * 检查视频片段的连续性
     *
     * @param startDate 开始时间
     * @param endDate 结束时间
     * @param maxGapMs 允许的最大间隔时间(毫秒)
     * @return 包含缺口信息的验证结果
     */
    VideoContinuityResult checkVideoContinuity(Date startDate, Date endDate, long maxGapMs);

    /**
     * 检查近期视频的连续性(便捷方法)
     * 时间范围: 当前时间向前2分钟后,再向前5分钟(即前7分钟到前2分钟)
     * 允许的最大间隙: 2秒
     *
     * @return 包含缺口信息的验证结果
     */
    VideoContinuityResult checkRecentVideoContinuity();
}
