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

import com.qqchen.deploy.backend.framework.repository.IBaseRepository;
import com.qqchen.deploy.backend.notification.entity.NotificationChannel;
import com.qqchen.deploy.backend.notification.enums.NotificationChannelStatusEnum;
import com.qqchen.deploy.backend.notification.enums.NotificationChannelTypeEnum;
import org.springframework.stereotype.Repository;

import java.util.List;

/**
 * 通知渠道Repository
 *
 * @author qqchen
 * @since 2025-10-22
 */
@Repository
public interface INotificationChannelRepository extends IBaseRepository<NotificationChannel, Long> {
    
    /**
     * 根据名称和删除标记查询是否存在
     *
     * @param name 渠道名称
     * @return 是否存在
     */
    boolean existsByNameAndDeletedFalse(String name);
    
    /**
     * 根据渠道类型和状态查询渠道列表
     *
     * @param channelType 渠道类型
     * @param status      状态
     * @return 渠道列表
     */
    List<NotificationChannel> findByChannelTypeAndStatusAndDeletedFalse(
        NotificationChannelTypeEnum channelType,
        NotificationChannelStatusEnum status
    );
    
    /**
     * 根据状态查询渠道列表
     *
     * @param status 状态
     * @return 渠道列表
     */
    List<NotificationChannel> findByStatusAndDeletedFalse(NotificationChannelStatusEnum status);
}

