package tech.easyflow.system.mapper;

import com.mybatisflex.core.BaseMapper;
import org.apache.ibatis.annotations.Delete;
import org.apache.ibatis.annotations.Param;
import tech.easyflow.system.entity.SysLog;

import java.util.Date;

/**
 *  映射层。
 *
 * @author michael
 * @since 2024-01-28
 */
public interface SysLogMapper extends BaseMapper<SysLog> {

    /**
     * 按操作时间删除一批过期日志。
     *
     * @param cutoff 过期时间边界，不包含该时间
     * @param batchSize 单批最大删除行数
     * @return 实际删除行数
     */
    @Delete("""
            DELETE FROM tb_sys_log
            WHERE created < #{cutoff}
            ORDER BY created
            LIMIT #{batchSize}
            """)
    int deleteExpiredBatch(@Param("cutoff") Date cutoff,
                           @Param("batchSize") int batchSize);
}
