<?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.tencent.supersonic.knowledge.persistence.mapper.DictTaskMapper">

    <resultMap id="DimValueDictTaskPO"
               type="com.tencent.supersonic.knowledge.persistence.dataobject.DictTaskDO">
        <id column="id" property="id"/>
        <result column="name" property="name"/>
        <result column="description" property="description"/>
        <result column="command" property="command"/>
        <result column="command_md5" property="commandMd5"/>
        <result column="dimension_ids" property="dimIds"/>
        <result column="status" property="status"/>
        <result column="created_by" property="createdBy"/>
        <result column="created_at" property="createdAt"/>
        <result column="progress" property="progress"/>
        <result column="elapsed_ms" property="elapsedMs"/>
    </resultMap>

    <insert id="createDimValueTask" useGeneratedKeys="true" keyProperty="id">
        insert into s2_dictionary_task
        (`name`, description, command, command_md5, dimension_ids, status, created_by, progress, elapsed_ms)
        values
        (#{name}, #{description}, #{command}, #{commandMd5}, #{dimIds}, #{status}, #{createdBy}, #{progress}, #{elapsedMs})
    </insert>

    <update id="updateTaskStatus">
        update s2_dictionary_task
        <set>
            <if test="description != null and description !=''">
                description = #{description},
            </if>
            <if test="status != null">
                status = #{status},
            </if>
            <if test="dimIds != null">
                dimension_ids = #{dimIds},
            </if>
            <if test="progress != null">
                progress = #{progress},
            </if>
            <if test="elapsedMs != null">
                elapsed_ms = #{elapsedMs},
            </if>

        </set>
        where id = #{id}
    </update>

    <select id="searchDictTaskList" resultMap="DimValueDictTaskPO">
        select *
        from s2_dictionary_task
        <where>
            <if test="id != null and id != ''">
                and id = #{id}
            </if>
            <if test="name != null and name !=''">
                and `name` like  CONCAT('%', #{name}, '%')
            </if>
            <if test="createdBy != null and createdBy !=''">
                and created_by = #{createdBy}
            </if>
            <if test="createdAt != null and createdAt !=''">
                and created_at &gt;= #{createdAt}
            </if>
            <if test="status != null">
                and status= #{status.code}
            </if>
        </where>
        order by created_at desc
    </select>

</mapper>