package com.microservices.pms.productLibrary.mapper;

import com.microservices.pms.productLibrary.domain.PmsProductLibraryRepositories;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;

import java.util.List;

/**
 * 制品库-仓库Mapper接口
 *
 * @author otto
 * @date 2024-06-20
 */
@Mapper
public interface PmsProductLibraryRepositoriesMapper {
    /**
     * 查询制品库-仓库
     *
     * @param id 制品库-仓库主键
     * @return 制品库-仓库
     */
    public PmsProductLibraryRepositories selectPmsProductLibraryRepositoriesById(Long id);

    /**
     * 查询制品库-仓库列表
     *
     * @param pmsProductLibraryRepositories 制品库-仓库
     * @return 制品库-仓库集合
     */
    public List<PmsProductLibraryRepositories> selectPmsProductLibraryRepositoriesList(PmsProductLibraryRepositories pmsProductLibraryRepositories);

    /**
     * 新增制品库-仓库
     *
     * @param pmsProductLibraryRepositories 制品库-仓库
     * @return 结果
     */
    public int insertPmsProductLibraryRepositories(PmsProductLibraryRepositories pmsProductLibraryRepositories);

    /**
     * 修改制品库-仓库
     *
     * @param pmsProductLibraryRepositories 制品库-仓库
     * @return 结果
     */
    public int updatePmsProductLibraryRepositories(PmsProductLibraryRepositories pmsProductLibraryRepositories);

    /**
     * 删除制品库-仓库
     *
     * @param id 制品库-仓库主键
     * @return 结果
     */
    public int deletePmsProductLibraryRepositoriesById(Long id);

    /**
     * 批量删除制品库-仓库
     *
     * @param ids 需要删除的数据主键集合
     * @return 结果
     */
    public int deletePmsProductLibraryRepositoriesByIds(Long[] ids);

    /**
     * 根据名称查找制品库
     *
     * @param name                    制品库标识
     * @param pmsEnterpriseIdentifier 组织标识
     * @param format 制品格式
     * @return 制品库数量
     */
    Integer selectPmsProductLibraryRepositoriesByNameCount(@Param("name") String name, @Param("pmsEnterpriseIdentifier") String pmsEnterpriseIdentifier, @Param("format") String format);

    /**
     * 根据名称查找快照库数量
     *
     * @param repoName                制品库标识
     * @param snapshotName            快照库标识
     * @param pmsEnterpriseIdentifier 组织标识
     * @return 快照库数量
     */
    Integer selectRepositoriesSnapshotBySnapshotNameCount(@Param("pmsEnterpriseIdentifier") String pmsEnterpriseIdentifier, @Param("repoName") String repoName, @Param("snapshotName") String snapshotName);

    /**
     * 根据制品库别名查找制品库
     *
     * @param alias                   制品库别名
     * @param pmsEnterpriseIdentifier 组织标识
     * @return 制品库数量
     */
    PmsProductLibraryRepositories selectPmsProductLibraryByAlias(@Param("alias") String alias, @Param("pmsEnterpriseIdentifier") String pmsEnterpriseIdentifier);

    /**
     * 根据制品库标识查找制品库
     *
     * @param pmsEnterpriseIdentifier 组织标识
     * @param name                    制品库标识
     * @return 制品库
     */
    PmsProductLibraryRepositories selectPmsProductLibraryRepositoriesByName(@Param("pmsEnterpriseIdentifier") String pmsEnterpriseIdentifier, @Param("name") String name);

    /**
     * 根据产品库标识查找产品库
     *
     * @param pmsEnterpriseIdentifier 组织标识
     * @param name                    产品库标识
     * @return 产品库
     */
    PmsProductLibraryRepositories selectPmsProductLibraryByName(@Param("pmsEnterpriseIdentifier") String pmsEnterpriseIdentifier, @Param("name") String name);

    /**
     * 根据制品库标识以及快照库标识查找快照库
     *
     * @param pmsEnterpriseIdentifier 组织标识
     * @param repoName             制品库标识
     * @param snapshotName         快照库标识
     * @return 快照库
     */
    PmsProductLibraryRepositories selectPmsProductLibrarySnapshotByName(@Param("pmsEnterpriseIdentifier") String pmsEnterpriseIdentifier, @Param("repoName") String repoName, @Param("snapshotName") String snapshotName);
    /**
     * 查询产品库列表
     *
     * @param pmsEnterpriseIdentifier 组织标识
     * @param name                    产品库标识
     * @return 产品库列表
     */
    List<PmsProductLibraryRepositories> selectPmsProductLibraryList(@Param("pmsEnterpriseIdentifier") String pmsEnterpriseIdentifier, @Param("name") String name);

    List<PmsProductLibraryRepositories> selectPmsProductLibrarySnapshotPageList(@Param("pmsEnterpriseIdentifier") String pmsEnterpriseIdentifier, @Param("repoName") String repoName, @Param("snapshotName") String snapshotName);

    PmsProductLibraryRepositories selectProductRepoById(Long repoId);

    /**
     * 根据制品库别名查找制品库
     *
     * @param alias                   制品库别名
     * @param pmsEnterpriseIdentifier 组织标识
     * @return 制品库
     */
    PmsProductLibraryRepositories selectPmsProductLibraryRepositoriesByAlias(@Param("alias") String alias, @Param("pmsEnterpriseIdentifier") String pmsEnterpriseIdentifier);
}
