<?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="com.munjaon.server.cache.mapper.ReportMapper">
    <select id="getReportForUser" resultType="ReportDto">
        /* ReportMapper.getReportForUser */
        SELECT
            MSG_ID
             , USER_ID
             , AGENT_MSG_ID
             , AGENT_CODE
             , MSG_TYPE
             , CASE WHEN RSLT_DATE IS NULL THEN DATE_FORMAT(NOW(), '%Y%m%d%H%i%S') ELSE DATE_FORMAT(RSLT_DATE, '%Y%m%d%H%i%S') END AS RSLT_DATE
             , RSLT_CODE
             , RSLT_NET
        FROM mj_msg_report
        WHERE USER_ID = #{userId}
            LIMIT 1
    </select>

    <select id="getReportListForUser" resultType="ReportDto">
        /* ReportMapper.getReportListForUser */
        SELECT
            MSG_ID
             , USER_ID
             , AGENT_MSG_ID
             , AGENT_CODE
             , MSG_TYPE
             , CASE WHEN RSLT_DATE IS NULL THEN DATE_FORMAT(NOW(), '%Y%m%d%H%i%S') ELSE DATE_FORMAT(RSLT_DATE, '%Y%m%d%H%i%S') END AS RSLT_DATE
             , RSLT_CODE
             , RSLT_NET
        FROM mj_msg_report
        WHERE USER_ID = #{userId}
            LIMIT 50
    </select>

    <delete id="deleteReport">
        DELETE FROM mj_msg_report WHERE MSG_ID = #{msgId}
    </delete>

    <delete id="deleteBulkReport">
        DELETE SRC FROM mj_msg_report SRC
        INNER JOIN (
            with recursive
            T as ( select #{msgId} as items),
            N as ( select 1 as n union select n + 1 from N, T
                where n <![CDATA[<=]]> length(items) - length(replace(items, ',', '')))
            select distinct substring_index(substring_index(items, ',', n), ',', -1)
            MSG_ID from N, T
        ) DEST ON SRC.MSG_ID = DEST.MSG_ID
        WHERE SRC.USER_ID = #{userId}
    </delete>
</mapper>