<?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.cms">
<!-- 1. 추가  쿼리 메소드 작성 -->
    <select id="kr.co.i2talk.cms.listCmsSourceInfo"
		parameterType="Map"
		resultType="i2c.cmm.base.CommonResultMap">
	/* kr.co.i2talk.cms.listCmsSourceInfo */
SELECT *
  FROM (
	SELECT COUNT(*) OVER() TOTAL_CNT
		 , ROW_NUMBER() OVER(ORDER BY a.crt_dttm DESC) RN
		 , a.*
	  FROM (
			SELECT a.src_id, a.src_nm, a.tbl_nm, a.descrip, a.key_fld, a.nm_fld, a.dt_fld, a.updt_prd
				 , a.crt_usr_id, FN_GET_USR_NM(a.crt_usr_id) crt_usr_nm, FN_GET_USR_PHOTO(a.crt_usr_id) crt_photo_img, a.crt_dttm
				 , FN_GET_USR_ORIGIN_PHOTO(a.crt_usr_id) as crt_photo_img_1
				 , a.mod_usr_id, FN_GET_USR_NM(a.mod_usr_id) mod_usr_nm, a.mod_dttm
			  FROM cms_source_info a
			 WHERE a.crt_usr_id = #{usr_id}
			<if test="@i2c.cmm.util.StringUtil@isEmpty(searchKeyword) == false">
				<if test="searchField == 'title'">
				AND a.src_nm like '%' || #{searchKeyword} || '%'
				</if>
				<if test="searchField == 'cont'">
				AND a.descrip like '%' || #{searchKeyword} || '%'
				</if>
			</if>
			 UNION ALL
			SELECT a.src_id, a.src_nm, a.tbl_nm, a.descrip, a.key_fld, a.nm_fld, a.dt_fld, a.updt_prd
				 , a.crt_usr_id, FN_GET_USR_NM(a.crt_usr_id) crt_usr_nm, FN_GET_USR_PHOTO(a.crt_usr_id) crt_photo_img, a.crt_dttm
				 , FN_GET_USR_ORIGIN_PHOTO(a.crt_usr_id) as crt_photo_img_1
				 , a.mod_usr_id, FN_GET_USR_NM(a.mod_usr_id) mod_usr_nm, a.mod_dttm
			  FROM cms_source_info a
				 , cms_source_follow b
			 WHERE a.src_id = b.src_id
			   AND a.crt_usr_id != #{usr_id}
			   AND b.usr_id = #{usr_id}
			<if test="@i2c.cmm.util.StringUtil@isEmpty(searchKeyword) == false">
				<if test="searchField == 'title'">
				AND a.src_nm like '%' || #{searchKeyword} || '%'
				</if>
				<if test="searchField == 'cont'">
				AND a.descrip like '%' || #{searchKeyword} || '%'
				</if>
			</if>
		   ) a
	 ORDER BY a.crt_dttm DESC
	)
 WHERE RN BETWEEN (#{page} - 1) * #{limit} AND (#{page} * #{limit})

    </select>

    <select id="kr.co.i2talk.cms.viewCmsSourceInfo"
		parameterType="Map"
		resultType="i2c.cmm.base.CommonResultMap">
	/* kr.co.i2talk.cms.viewCmsSourceInfo */
SELECT a.src_id, a.src_nm, a.tbl_nm, a.descrip, a.key_fld, a.nm_fld, a.dt_fld, a.updt_prd
	 , a.crt_usr_id, FN_GET_USR_NM(a.crt_usr_id) crt_usr_nm, FN_GET_USR_PHOTO(a.crt_usr_id) crt_photo_img, a.crt_dttm
	 , FN_GET_USR_ORIGIN_PHOTO(a.crt_usr_id) as crt_photo_img_1
	 , a.mod_usr_id, FN_GET_USR_NM(a.mod_usr_id) mod_usr_nm, a.mod_dttm
  FROM cms_source_info a
 WHERE a.src_id = #{src_id}
    </select>

    <insert id="kr.co.i2talk.cms.insertCmsSourceInfo"
		parameterType="Map">
/* kr.co.i2talk.cms.insertCmsSourceInfo */
INSERT INTO cms_source_info
	 ( src_id, src_nm, tbl_nm, descrip, key_fld, nm_fld, dt_fld, updt_prd
	 , crt_usr_id, crt_dttm, mod_usr_id, mod_dttm)
VALUES
	 ( #{src_id}, #{src_nm}, #{tbl_nm}, #{descrip}, #{key_fld}, #{nm_fld}, #{dt_fld}, #{updt_prd}
	 , #{crt_usr_id}, #{crt_dttm}, #{mod_usr_id}, #{mod_dttm})
    </insert>
    
	<update id="kr.co.i2talk.cms.updateCmsSourceInfo"
		parameterType="Map">
/* kr.co.i2talk.cms.updateCmsSourceInfo */
UPDATE cms_source_info
   SET src_nm = #{src_nm}
	 , tbl_nm = #{tbl_nm}
	 , descrip = #{descrip}
	 , key_fld = #{key_fld}
	 , nm_fld = #{nm_fld}
	 , dt_fld = #{dt_fld}
	 , updt_prd = #{updt_prd}
	 , mod_usr_id = #{mod_usr_id}
	 , mod_dttm = #{mod_dttm}
 WHERE src_id = #{src_id}
    </update>

	<delete id="kr.co.i2talk.cms.deleteCmsSourceInfo"
		parameterType="Map">
/* kr.co.i2talk.cms.deleteCmsSourceInfo */
DELETE FROM cms_source_info WHERE src_id = #{src_id}
    </delete>
<!-- 1. 추가  쿼리 메소드 작성 끝 -->

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

    <select id="kr.co.i2talk.cms.listCmsSourceData"
    	parameterType="Map"
		resultType="i2c.cmm.base.CommonResultMap">
	/* kr.co.i2talk.cms.listCmsSourceData */
SELECT 
	<if test="@i2c.cmm.util.StringUtil@isEmpty(chrt_info_id) == true">
		*
	</if>
	<if test="@i2c.cmm.util.StringUtil@isEmpty(chrt_info_id) == false">
		<foreach collection="columns" item="item" index="index" open="" separator=", " close="">
			#{item}
		</foreach>
	</if>
  FROM #{tbl_nm}
<if test="@i2c.cmm.util.StringUtil@isEmpty(chrt_info_id) == false">
	WHERE chrt_info_id = #{chrt_info_id}
</if>

    </select>

    <select id="kr.co.i2talk.cms.listCmsSourceFollow"
    	parameterType="Map"
		resultType="i2c.cmm.base.CommonResultMap">
	/* kr.co.i2talk.cms.listCmsSourceFollow */
SELECT COUNT(*) OVER() TOTAL_CNT
	 , ROW_NUMBER() OVER(ORDER BY a.crt_dttm DESC) RN
	 , a.usr_id, FN_GET_USR_NM(a.usr_id) usr_nm, FN_GET_USR_PHOTO(a.usr_id) usr_photo_img, src_id
	 , FN_GET_USR_ORIGIN_PHOTO(a.usr_id) as usr_photo_img_1
	 , a.crt_usr_id, FN_GET_USR_NM(a.crt_usr_id) crt_usr_nm, a.crt_dttm
	 , a.mod_usr_id, FN_GET_USR_NM(a.mod_usr_id) mod_usr_nm, a.mod_dttm
  FROM cms_source_follow a
 WHERE a.src_id = #{src_id}
 ORDER BY a.crt_dttm DESC
    </select>

    <insert id="kr.co.i2talk.cms.insertCmsSourceFollow"
		parameterType="Map">
/* kr.co.i2talk.cms.insertCmsSourceFollow */
INSERT INTO cms_source_follow
	 ( src_id, usr_id
	 , crt_usr_id, crt_dttm, mod_usr_id, mod_dttm)
VALUES
	 ( #{src_id}, #{usr_id}
	 , #{crt_usr_id}, #{crt_dttm}, #{mod_usr_id}, #{mod_dttm})
    </insert>
    
	<delete id="kr.co.i2talk.cms.deleteCmsSourceFollowAll"
		parameterType="Map">
/* kr.co.i2talk.cms.deleteCmsSourceFollowAll */
DELETE FROM cms_source_follow WHERE src_id = #{src_id}
    </delete>
    
	<delete id="kr.co.i2talk.cms.deleteCmsSourceFollow"
		parameterType="Map">
/* kr.co.i2talk.cms.deleteCmsSourceFollow */
DELETE FROM cms_source_follow WHERE src_id = #{src_id} AND usr_id = #{usr_id}
    </delete>
    
    <select id="kr.co.i2talk.cms.listCmsSourceTable"
    	parameterType="Map"
		resultType="i2c.cmm.base.CommonResultMap">
	/* kr.co.i2talk.cms.listCmsSourceTable */
SELECT table_name FROM user_tables
    </select>

    <select id="kr.co.i2talk.cms.listCmsSourceColumn"
    	parameterType="Map"
		resultType="i2c.cmm.base.CommonResultMap">
	/* kr.co.i2talk.cms.listCmsSourceColumn */
SELECT column_name, comments
  FROM user_col_comments
 WHERE table_name=#{table_name}
    </select>

    <insert id="kr.co.i2talk.cms.insertCmsSourceData"
		parameterType="Map">
/* kr.co.i2talk.cms.insertCmsSourceData */
INSERT INTO #{tbl_nm}
	 (
		<foreach collection="columns" item="item" index="index" open="" separator=", " close="">
			#{item}
		</foreach>
	 )
VALUES
	 (
		<foreach collection="datas" item="item" index="index" open="" separator=", " close="">
			#{item}
		</foreach>
	 )
    </insert>

    <select id="kr.co.i2talk.cms.listCmsSourceInfoByTableName"
		parameterType="Map"
		resultType="i2c.cmm.base.CommonResultMap">
	/* kr.co.i2talk.cms.listCmsSourceInfoByTableName */
SELECT a.src_id, a.src_nm, a.tbl_nm, a.descrip, a.key_fld, a.nm_fld, a.dt_fld, a.updt_prd
	 , a.crt_usr_id, a.crt_dttm, a.mod_usr_id, a.mod_dttm
  FROM cms_source_info a
 WHERE a.tbl_nm = #{tbl_nm}
   AND rownum = 1
    </select>

    <select id="kr.co.i2talk.cms.checkDatasourceUsedToChartInfo"
		parameterType="Map"
		resultType="i2c.cmm.base.CommonResultMap">
	/* kr.co.i2talk.cms.checkDatasourceUsedToChartInfo */
SELECT chrt_info_id 
  FROM cms_chart_info 
 WHERE src_id = #{src_id}
   AND ROWNUM = 1
    </select>

	<delete id="kr.co.i2talk.cms.deleteCmsSourceDataByChrtInfoId"
		parameterType="Map">
/* kr.co.i2talk.cms.deleteCmsSourceDataByChrtInfoId */
DELETE FROM cms_chart_data WHERE chrt_info_id = #{chrt_info_id}
    </delete>

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