<?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="io.renren.modules.resource.dao.TbDataResourceRelDao">

    <resultMap type="io.renren.modules.resource.entity.TbDataResourceRelEntity" id="tbDataResourceRelMap">
        <result property="keyId" column="key_id"/>
        <result property="referenceId" column="reference_id"/>
        <result property="delFlag" column="del_flag"/>
        <result property="creator" column="creator"/>
        <result property="createDate" column="create_date"/>
        <result property="updater" column="updater"/>
        <result property="updateDate" column="update_date"/>
        <result property="id" column="id"/>
    </resultMap>
    <select id="getAlreadLinkedApplication" resultType="java.util.Map">
        SELECT
            tdrr.key_id as id,
            tdr.name
        FROM tb_data_resource_rel tdrr
                 left join tb_data_resource tdr on tdrr.key_id = tdr.id
        where tdrr.del_flag = 0 and tdr.del_flag = 0
        and tdrr.reference_id = #{referenceId}
          <if test="keyName != null and keyName != ''">
              and tdr.name like CONCAT('%',#{keyName},'%')
          </if>

    </select>

    <select id="getNotLinkedApplication" resultType="java.util.Map">
        SELECT
            id,
            name
        FROM tb_data_resource
        where del_flag = 0 and type = '应用资源'
          and id not in (SELECT key_id FROM tb_data_resource_rel where reference_id = #{referenceId})
        <if test="keyName != null and keyName != ''">
            and name like CONCAT('%',#{keyName},'%')
        </if>

    </select>
    <select id="getAlreadLinkedResource" resultType="java.util.Map">
        SELECT
            tdrr.reference_id AS id,
            tdr.name
        FROM
            tb_data_resource_rel tdrr
                LEFT JOIN tb_data_resource tdr ON tdrr.reference_id = tdr.id
        WHERE
            tdrr.del_flag = 0
          AND tdr.del_flag = 0
          AND tdrr.key_id = #{keyId}
        <if test="referenceName != null and referenceName != ''">
            AND tdr.name LIKE CONCAT('%',#{referenceName},'%')
        </if>
          and tdr.type = #{type}
    </select>

    <select id="getPart4AppById" resultType="java.util.Map">
        SELECT
        tdrr.reference_id AS id,
        tdr.name
        FROM
        tb_data_resource_rel tdrr
        LEFT JOIN tb_data_resource tdr ON tdrr.reference_id = tdr.id
        WHERE
        tdrr.del_flag = 0
        AND tdr.del_flag = 0
        AND tdrr.key_id = #{keyId}
        and tdr.type = #{type}
    </select>

    <select id="getNotLinkedResource" resultType="java.util.Map">
        SELECT
            id,
            name
        FROM tb_data_resource
        where del_flag = 0 and type = #{type}
          and id not in (SELECT reference_id FROM tb_data_resource_rel where key_id = #{keyId})
        <if test="referenceName != null and referenceName != ''">
            and name like CONCAT('%',#{referenceName},'%')
        </if>

    </select>

    <update id="deleteAllByKeyId">
        update tb_data_resource_rel set del_flag = 1,updater = #{userId},update_date = #{updateDate}
        where key_id = #{keyId} and del_flag = 0
    </update>

    <update id="deleteAllByreferenceId">
        update tb_data_resource_rel set del_flag = 1,updater = #{userId},update_date = #{updateDate}
        where reference_id = #{referenceId} and del_flag = 0
    </update>

    <select id="getAlreadLinkedProject" resultType="java.util.Map">
        SELECT
        tdrr.reference_id AS id,
        tp.project_name as name
        FROM
        tb_data_resource_rel tdrr
        LEFT JOIN tb_project tp ON tdrr.reference_id = tp.id
        WHERE tp.id is not null
        and tdrr.del_flag = 0
        AND tdrr.key_id = #{keyId}
        <if test="projectName != null and projectName != ''">
            AND tp.project_name LIKE CONCAT('%',#{projectName},'%')
        </if>
    </select>

    <select id="getNotLinkedProject" resultType="java.util.Map">
        SELECT
        id,
        project_name as name
        FROM tb_project
        where id not in (SELECT reference_id FROM tb_data_resource_rel where key_id = #{keyId})
        <if test="projectName != null and projectName != ''">
            and project_name like CONCAT('%',#{projectName},'%')
        </if>
    </select>
</mapper>