ITN Dev 07-22
fix: 채널ID 갱신을 kind 분기 대신 정적 타입 메서드 2개로 분리
updateChannelId(id, kind, channelId)는 kind가 "mj"가 아니면 무조건
로 빠져 channel_id_law에 잘못 기록됐다. 오타·null·새 kind가
들어와도 예외 없이 조용히 엉뚱한 컬럼을 덮어써 검증이 불가능했다.

 분기를 없애고 updateChannelIdMj/updateChannelIdLaw로 나눠
컬럼을 컴파일 타임에 고정한다. 폴백 경로 자체가 사라져 다음 단계인
Mattermost 채널 프로비저닝에서 한쪽씩 기록해도 안전하다.
@cecbba01d4fdc20b2776cbb8e2e2df3adc2f00eb
src/main/java/kr/itn/itnhub/org/OrganizationMapper.java
--- src/main/java/kr/itn/itnhub/org/OrganizationMapper.java
+++ src/main/java/kr/itn/itnhub/org/OrganizationMapper.java
@@ -17,7 +17,9 @@
 
     int updateContact(Organization org);
 
-    int updateChannelId(@Param("id") Long id,
-                        @Param("kind") String kind,
-                        @Param("channelId") String channelId);
+    int updateChannelIdMj(@Param("id") Long id,
+                          @Param("channelId") String channelId);
+
+    int updateChannelIdLaw(@Param("id") Long id,
+                           @Param("channelId") String channelId);
 }
src/main/resources/mapper/OrganizationMapper.xml
--- src/main/resources/mapper/OrganizationMapper.xml
+++ src/main/resources/mapper/OrganizationMapper.xml
@@ -54,13 +54,17 @@
     where id = #{id}
   </update>
 
-  <update id="updateChannelId">
+  <update id="updateChannelIdMj">
     update organization set
-    <choose>
-      <when test="kind == 'mj'">channel_id_mj = #{channelId},</when>
-      <otherwise>channel_id_law = #{channelId},</otherwise>
-    </choose>
-      updated_at = now()
+      channel_id_mj = #{channelId},
+      updated_at    = now()
+    where id = #{id}
+  </update>
+
+  <update id="updateChannelIdLaw">
+    update organization set
+      channel_id_law = #{channelId},
+      updated_at     = now()
     where id = #{id}
   </update>
 
src/test/java/kr/itn/itnhub/org/OrganizationMapperTest.java
--- src/test/java/kr/itn/itnhub/org/OrganizationMapperTest.java
+++ src/test/java/kr/itn/itnhub/org/OrganizationMapperTest.java
@@ -60,8 +60,8 @@
     void 시드_재실행은_기존_채널ID를_지우지_않는다() {
         mapper.upsertBySeed(seedRow("001", "국제방송교류재단", "데이터정보화팀"));
         Long id = mapper.findAll().get(0).getId();
-        mapper.updateChannelId(id, "mj", "chan-mj");
-        mapper.updateChannelId(id, "law", "chan-law");
+        mapper.updateChannelIdMj(id, "chan-mj");
+        mapper.updateChannelIdLaw(id, "chan-law");
 
         mapper.upsertBySeed(seedRow("001", "국제방송교류재단", "데이터정보화팀"));
 
@@ -105,7 +105,7 @@
         mapper.upsertBySeed(seedRow("002", "세종학당재단", "콘텐츠개발팀"));
         Long id = mapper.findAll().get(0).getId();
 
-        mapper.updateChannelId(id, "mj", "only-mj");
+        mapper.updateChannelIdMj(id, "only-mj");
 
         Organization after = mapper.findById(id);
         assertThat(after.getChannelIdMj()).isEqualTo("only-mj");
Add a comment
List