/**
 * @ProjectName: 智慧评标-主观分助手
 * @Package: com.zhpb.gdyd_zhpb_zgf.repository.mysql
 * @ClassName: QaMessageRepository
 * @Description: QA消息Repository
 * @Author: 张志锋
 * @Date: 2025-11-03
 * @Version: 1.0
 * @Copyright: © 2025 智慧评标-主观分助手
 */
package com.zhpb.gdyd_zhpb_zgf.repository.mysql;

import com.zhpb.gdyd_zhpb_zgf.entity.mysql.QaMessage;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.Query;
import org.springframework.data.repository.query.Param;
import org.springframework.stereotype.Repository;

import java.util.List;

/**
 * QA消息Repository
 */
@Repository
public interface QaMessageRepository extends JpaRepository<QaMessage, Long> {

    /**
     * 根据消息ID查找消息
     */
    java.util.Optional<QaMessage> findByMessageId(String messageId);

    /**
     * 根据会话ID查找消息列表，按时间戳排序
     */
    List<QaMessage> findBySessionIdOrderByTimestampAsc(String sessionId);

    /**
     * 根据会话ID和发送者查找消息列表
     */
    List<QaMessage> findBySessionIdAndSenderOrderByTimestampAsc(String sessionId, String sender);

    /**
     * 根据发送者查找消息列表
     */
    List<QaMessage> findBySenderOrderByTimestampDesc(String sender);

    /**
     * 统计会话的消息数量
     */
    long countBySessionId(String sessionId);

    /**
     * 删除会话的所有消息
     */
    void deleteBySessionId(String sessionId);
    /**
     * 查找会话中最后一条包含文件的消息
     */
    @Query(value = "SELECT * FROM t_qa_message WHERE session_id = :sessionId AND file_ids IS NOT NULL AND file_ids != '[]' AND file_ids != '' ORDER BY timestamp DESC LIMIT 1", nativeQuery = true)
    QaMessage findLastMessageWithFiles(@Param("sessionId") String sessionId);
}
