<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
        "https://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="kr.itn.itnhub.memo.WorkMemoMapper">

  <!--
    created_at을 밀리초 epoch로 내려준다 - 게시물 탭(PostView.createAt)과 동일한
    관례를 맞추기 위함이다.
  -->
  <sql id="columns">
    id, org_id, contact_name, body,
    (extract(epoch from created_at) * 1000)::bigint as created_at
  </sql>

  <select id="findByOrg" resultType="kr.itn.itnhub.memo.WorkMemo">
    select <include refid="columns"/>
    from work_memo
    where org_id = #{orgId}
    order by created_at desc, id desc
  </select>

  <insert id="insert" parameterType="kr.itn.itnhub.memo.WorkMemo">
    insert into work_memo (org_id, contact_name, body)
    values (#{orgId}, #{contactName}, #{body})
  </insert>

  <!--
    본문만 고친다. 작성자(contact_name)와 작성시각은 그대로 둔다 - 누가 언제 남긴
    메모인지가 이력의 핵심이라 수정으로 덮이면 안 된다.
    delete와 같은 이유로 org_id를 함께 조건에 넣는다.
  -->
  <update id="updateBody">
    update work_memo
    set body = #{body}
    where id = #{id} and org_id = #{orgId}
  </update>

  <delete id="delete">
    delete from work_memo
    where id = #{id} and org_id = #{orgId}
  </delete>

</mapper>
