<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="admin.modules.chatgpt.service.mapper.ChatgptRoleRecordsMapper">

  <!-- 通用查询结果列 -->
  <!--
  <sql id="Base_Column_List">
      a.id, a.sender_id, a.receiver_id, a.message, a.create_time
  </sql>
  -->
    <select id="queryRoleSessionListPage" resultType="admin.modules.chatgpt.domain.ChatgptRoleRecords">
      select *
      from (select *
            from chatgpt_role_records
            where sender_id = #{userId}
              and receiver_id = #{roleDescId}
              and session_id is null
            union all
            select *
            from chatgpt_role_records
            where sender_id = #{roleDescId}
              and receiver_id = #{userId}
              and session_id is null) as a
    </select>

    <select id="findByTextCount" resultType="Integer">
        SELECT SUM(LENGTH(message))
        FROM `chatgpt_role_records`
        WHERE receiver_id = #{memberId} or sender_id = #{memberId}
    </select>

    <select id="findBySessionCount" resultType="Integer">
        SELECT COUNT(DISTINCT session_id)
        FROM `chatgpt_role_records`
        WHERE (receiver_id = #{memberId} or sender_id = #{memberId})
          AND session_id is not NULL
    </select>

    <select id="findByDialogueCount" resultType="Integer">
        SELECT count(*)
        FROM `chatgpt_role_records`
        WHERE sender_id = #{memberId}
    </select>


    <select id="queryTenRecordByUserId" resultType="admin.modules.chatgpt.domain.ChatgptRoleRecords">
        SELECT *
        FROM `chatgpt_role_records`
        WHERE sender_id = #{userId} or receiver_id =#{userId} order by create_time desc limit 10
    </select>
</mapper>