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

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

import java.util.List;
import java.util.Set;

/**
 * 团队环境通知配置Repository
 *
 * @author qqchen
 * @since 2025-11-11
 */
@Repository
public interface ITeamEnvironmentNotificationConfigRepository 
        extends IBaseRepository<TeamEnvironmentNotificationConfig, Long> {

    /**
     * 根据团队ID和环境ID批量查询启用了构建通知的配置
     *
     * @param teamIds 团队ID集合
     * @param environmentIds 环境ID集合
     * @return 通知配置列表
     */
    List<TeamEnvironmentNotificationConfig> findByTeamIdInAndEnvironmentIdInAndBuildNotificationEnabledTrue(
            Set<Long> teamIds, Set<Long> environmentIds);

    /**
     * 根据团队ID和环境ID批量查询通知配置
     *
     * @param teamIds 团队ID集合
     * @param environmentIds 环境ID集合
     * @return 通知配置列表
     */
    List<TeamEnvironmentNotificationConfig> findByTeamIdInAndEnvironmentIdIn(
            Set<Long> teamIds, Set<Long> environmentIds);

    /**
     * 根据团队ID和环境ID查询通知配置
     *
     * @param teamId 团队ID
     * @param environmentId 环境ID
     * @return 通知配置（如果存在）
     */
    java.util.Optional<TeamEnvironmentNotificationConfig> findByTeamIdAndEnvironmentId(Long teamId, Long environmentId);
}
