fix: 예약이 있는 회의실을 지울 때 그 예약이 정리되지 않는 문제 수정 - #1237
Open
wantaekchoi wants to merge 1 commit into
Open
Conversation
회의실 삭제는 방 한 행만 지운다. 같은 핸들러가 첨부파일은 정리하는데 예약만 정리하지 않는다. 매퍼 여덟 방언의 예약 삭제문은 예약 아이디를 요구하므로 방 아이디로 예약을 지우는 SQL 자체가 없다. 결과는 배포한 DDL에 따라 갈린다. 참조 무결성이 걸린 방언에서는 삭제 자체가 실패해 사용자가 오류 화면을 본다. 걸리지 않은 방언에서는 예약이 남는데, 예약 조회가 회의실을 기준 테이블로 삼으므로 화면에서는 보이지 않는다. 어느 쪽도 좋은 결과가 아니다. 예약이 남아 있으면 삭제하지 않고 화면에 알리도록 했다. 방 아이디로 예약 건수를 세는 조회가 없어 여덟 방언에 같은 문장을 하나씩 넣었다. 기존 중복확인 조회와 같은 배관이다. 연쇄 삭제로 가는 방법도 있다. 되돌릴 수 없는 삭제라 이쪽을 택했고, 메인테이너가 연쇄 삭제를 원하신다면 그쪽으로 다시 내겠다.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
수정 사유 Reason for modification
수정된 소스 내용 Modified source
회의실을 지워도 사라지는 것은 방 한 행뿐입니다. 같은 핸들러가 첨부파일은 정리하는데 예약만 정리하지 않습니다. 정리 책임을 이미 지고 있으면서 한쪽만 빠진 셈입니다.
매퍼 여덟 방언의 예약 삭제문은 예약 아이디를 요구하므로 방 아이디로 예약을 지우는 SQL 자체가 없습니다.
배포한 DDL이 무엇이냐에 따라 결과가 달라집니다.
어느 쪽으로 가든 바람직하지 않습니다.
AS-IS
TO-BE
영향 범위
예약이 없는 회의실은 종전과 똑같이 지워집니다. 예약이 남아 있는 회의실을 지우려 할 때만 동작이 달라집니다. 그때는 오류 화면이나 조용한 잔존 대신 안내가 뜹니다.
방 아이디로 예약 건수를 세는 조회가 없어 여덟 방언에 같은 문장을 하나씩 넣었습니다.
방언 문법 차이가 없어 여덟 파일이 같은 내용이고 각 파일 끝에 붙여 기존 문장과 줄이 겹치지 않습니다. DAO·서비스 배관은 같은 클래스의 기존 중복확인 조회와 같은 모양으로 맞췄습니다.
연쇄 삭제라는 선택지도 있습니다. 되돌릴 수 없는 삭제여서 이쪽을 골랐습니다. 메인테이너께서 연쇄 삭제를 원하신다면 그 방향으로 다시 내겠습니다.
한글·영문 메시지 키를 하나씩 추가했고 목록 화면에는 알림을 넣었습니다.
JUnit 테스트 JUnit tests
EgovMtgPlaceManageControllerDeleteTest2건을 추가했습니다. 서비스와 파일 서비스를Proxy로 세우고 예약 건수를 달리하며 예약이 있을 때는 삭제가 호출되지 않고 없을 때는 호출되는지 확인합니다. 스프링 컨텍스트나 DB 없이 돌아갑니다.수정 전(RED, 가드만 되돌려 실행)
수정 후(GREEN)
커밋에 pom 변경은 넣지 않았습니다.
<skipTests>true</skipTests>를 잠시 풀고 받은 출력입니다.테스트 브라우저 Test Browser
해당 없음
테스트 스크린샷 또는 캡처 영상 Test screenshots or captured video
해당 없음