<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper PUBLIC "-//ibatis.apache.org//DTD Mapper 3.0//EN" "http://ibatis.apache.org/dtd/ibatis-3-mapper.dtd">

<mapper namespace="kr.co.i2talk.push">
<!-- 1. 추가  쿼리 메소드 작성 -->
	<select id="kr.co.i2talk.push.listSnsUserClient"
		parameterType="Map"
		resultType="i2c.cmm.base.CommonResultMap">
	/* kr.co.i2talk.push.listSnsUserClient */
SELECT
	*
FROM (
	SELECT COUNT(*) OVER() TOTAL_CNT,
		ROW_NUMBER() OVER(order by suc.use_yn desc, suc.lst_connect_dttm desc, sc.client_nm asc) RN,
		suc.usr_id,
		suc.client_id, sc.client_nm,
		suc.use_yn,
		suc.use_stop_dttm,
		suc.connect_state_cd,
		suc.lst_connect_dttm
	FROM
		sns_user_client suc, sns_client sc
	WHERE suc.client_id = sc.client_id
	--and suc.use_yn = 'Y'
	and sc.usr_del_aval_yn = 'Y'
	and suc.usr_id = #{usr_id}
	order by suc.use_yn desc, suc.lst_connect_dttm desc, sc.client_nm asc)
	</select>

	<select id="kr.co.i2talk.push.viewSnsUserClient"
		parameterType="Map"
		resultType="i2c.cmm.base.CommonResultMap">
	/* kr.co.i2talk.push.viewSnsUserClient */
SELECT
	usr_id,
	client_id,
	use_yn,
	use_stop_dttm,
	connect_state_cd,
	lst_connect_dttm
FROM
	sns_user_client
WHERE
	usr_id = #{usr_id}
	and client_id = #{client_id}
	</select>

	<insert id="kr.co.i2talk.push.insertSnsUserClient"
		parameterType="Map">
/* kr.co.i2talk.push.insertSnsUserClient */
INSERT INTO sns_user_client
	(usr_id, client_id, use_yn, use_stop_dttm, connect_state_cd, lst_connect_dttm)
VALUES
	(#{usr_id}, #{client_id}, #{use_yn}, #{use_stop_dttm}, #{connect_state_cd}, #{lst_connect_dttm})
	</insert>

	<update id="kr.co.i2talk.push.updateSnsUserClient"
		parameterType="Map">
/* kr.co.i2talk.push.updateSnsUserClient */
UPDATE sns_user_client SET
	use_yn = #{use_yn},
	use_stop_dttm = #{use_stop_dttm},
	connect_state_cd = #{connect_state_cd},
	lst_connect_dttm = #{lst_connect_dttm}
WHERE
	usr_id = #{usr_id}
	and client_id = #{client_id}
	</update>

	<delete id="kr.co.i2talk.push.deleteSnsUserClient"
		parameterType="Map">
/* kr.co.i2talk.push.deleteSnsUserClient */
DELETE FROM sns_user_client
WHERE
	usr_id = #{usr_id}
	and client_id = #{client_id}
	</delete>

<!-- 1. 추가  쿼리 메소드 작성 끝 -->

<!-- 2. 추가  쿼리 메소드 작성 -->

<!-- 2. 추가  쿼리 메소드 작성 끝 -->


	<select id="kr.co.i2talk.push.listPrevUserChat"
		parameterType="Map"
		resultType="i2c.cmm.base.CommonResultMap">
/* kr.co.i2talk.push.listPrevUserChat */
WITH AA AS (
	SELECT
		ROW_NUMBER() OVER(ORDER BY SND_DTTM DESC) RN,/* 역순 주의 : 최근 대화 10개 */
		USR_CHAT_ID,
		SNDR_ID,
		RCVR_ID,
		MSG_TYPE,
		CNTN,
		SND_DTTM,
		CNFM_DTTM,
		MSG_ID
	FROM
		SNS_USER_CHAT
	WHERE
		(
			(SNDR_ID = #{my_usr_id} and RCVR_ID = #{tar_usr_id})
		OR
			(SNDR_ID = #{tar_usr_id} and RCVR_ID = #{my_usr_id})
		)
	ORDER BY
		SND_DTTM, RN DESC
)
SELECT
*
FROM
	AA
WHERE
	<if test="@i2c.cmm.util.StringUtil@isEmpty(continue_key)">
		RN &lt;= #{limit}
	</if>
	<if test="@i2c.cmm.util.StringUtil@isNotEmpty(continue_key)">
		RN &lt;= (SELECT RN FROM AA WHERE USR_CHAT_ID = #{continue_key}) + #{limit}
		AND RN &gt; (SELECT RN FROM AA WHERE USR_CHAT_ID = #{continue_key})
	</if>
	</select>
	
	
</mapper>
