package com.qqchen.deploy.backend.system.repository;

import com.qqchen.deploy.backend.framework.repository.IBaseRepository;
import com.qqchen.deploy.backend.system.entity.SystemRelease;
import org.springframework.stereotype.Repository;

import java.math.BigDecimal;
import java.util.List;

/**
 * 系统版本发布记录仓储接口
 */
@Repository
public interface ISystemReleaseRepository extends IBaseRepository<SystemRelease, Long> {

    /**
     * 根据版本号和模块查询（排除已删除）
     *
     * @param releaseVersion 版本号
     * @param module         模块类型
     * @return 发布记录
     */
    SystemRelease findByReleaseVersionAndModuleAndDeletedFalse(BigDecimal releaseVersion, String module);

    /**
     * 检查版本号和模块是否存在（排除已删除）
     *
     * @param releaseVersion 版本号
     * @param module         模块类型
     * @return 是否存在
     */
    boolean existsByReleaseVersionAndModuleAndDeletedFalse(BigDecimal releaseVersion, String module);

    /**
     * 查询未通知的发布记录（排除已删除）
     *
     * @return 未通知的发布记录列表
     */
    List<SystemRelease> findByNotifiedFalseAndDeletedFalseOrderByReleaseDateDesc();

    /**
     * 根据模块查询最新的发布记录（排除已删除）
     *
     * @param module 模块类型
     * @return 最新的发布记录
     */
    SystemRelease findTopByModuleAndDeletedFalseOrderByReleaseDateDesc(String module);

    /**
     * 查询最新的未通知版本（按版本号降序）
     *
     * @return 最新的未通知版本
     */
    SystemRelease findFirstByNotifiedFalseAndDeletedFalseOrderByReleaseVersionDesc();
}
