package com.yupi.project.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.yupi.project.model.entity.MqttCommunicationLog;
import org.eclipse.paho.client.mqttv3.MqttMessage;

public interface MqttCommunicationLogService extends IService<MqttCommunicationLog> {

    /**
     * 异步记录MQTT消息
     *
     * @param topic       主题
     * @param message     MQTT消息对象
     * @param direction   方向 (UPSTREAM/DOWNSTREAM)
     * @param clientId    客户端ID
     * @param messageIdStr MQTT v5 的 Message ID 或应用生成的UUID
     * @param backendProcessingStatus 后端处理状态 (可选)
     * @param backendProcessingInfo   后端处理信息 (可选)
     * @param relatedSessionId        关联的会话ID (可选)
     * @param relatedTaskId           关联的任务ID (可选)
     */
    void asyncLogMessage(String topic, MqttMessage message, String direction, String clientId,
                         String messageIdStr, String backendProcessingStatus,
                         String backendProcessingInfo, Long relatedSessionId, Long relatedTaskId);

    /**
     * 异步记录出站 (DOWNSTREAM) MQTT消息的简化版本。
     * 通常在消息发布后调用。
     */
    void asyncLogDownstreamMessage(String topic, String payload, Integer qos, Boolean retained, String clientId, String messageIdStr, Long relatedSessionId, Long relatedTaskId);
} 