package cn.axzo.msg.center.message.service;

import cn.axzo.msg.center.message.domain.dto.MessageTemplateRouterDTO;
import java.util.Collection;
import java.util.Map;
import java.util.Optional;

/**
 * @description
 *   消息模板路由管理
 *
 * @author cold_blade
 * @date 2023/9/28
 * @version 1.0
 */
public interface MessageTemplateRouterService {

    /**
     * 根据消息模板编码查询配置的路由
     *
     * @param templateCode 消息模板编码
     * @return 路由
     */
    Optional<MessageTemplateRouterDTO> queryByTemplateCode(String templateCode);

    /**
     * 保存OR更新消息模板的路由
     *
     * @param router    路由配置
     * @param isUpdate  是否更新
     */
    void saveOrUpdate(MessageTemplateRouterDTO router, boolean isUpdate, String templateCode);

    /**
     * 根据消息模板编码查询配置的路由列表
     *
     * @param templateCodes 消息模板编码列表
     * @return 路由列表
     */
    Map<String, MessageTemplateRouterDTO> groupByTemplateCode(Collection<String> templateCodes);
}
