Closed
Labels
Description
관련 명세
docs/s1-api-spec.md11번PUT /api/v1/templates/{templateId}(NEW-07, MYT-07, MYT-09, 정책표 4)TEMPLATE200_3수정 내용이 저장되었습니다.TEMPLATE400_1~7형식 오류,TEMPLATE404_1·TEMPLATE404_2,TEMPLATE409_1이미 사용 중인 단축어예요.
작업 내용
#49의 getActiveTemplate을 재사용해 세 필드 전체 수정을 만든다.
TemplateCommandService: 수정 메서드, 입력TemplateUpdateCommand, 결과TemplateUpdateResultTemplateController:PUT /{templateId}, 요청TemplateUpdateRequest, 응답TemplateUpdateResponse, 성공 코드TEMPLATE200_3TemplateRepository: 자기 자신을 뺀 활성 단축어 중복 조회. 13번excludeTemplateId도 같은 메서드를 쓴다- 저장은 기존
save()로 한다. 저장 시 유니크 위반은TEMPLATE409_1로 바꾼다 - 현재 시각은
Clock빈에서 얻는다
동작 규칙
| 경우 | 결과 |
|---|---|
| 정리 후 세 값이 기존과 같음 | 아무것도 바뀌지 않음. edited_at·updated_at 유지 |
| 단축어 대소문자만 변경 | 수정으로 처리 |
| 자기 자신의 단축어 그대로 | 중복 아님 |
| 내 다른 활성 템플릿과 비교 키가 같음 | TEMPLATE409_1 |
| 휴지통 템플릿이 쓰던 단축어 | 사용 가능 |
| 없는 ID, 다른 회원 템플릿 (휴지통 포함) | TEMPLATE404_1 |
| 내 템플릿인데 휴지통에 있음 | TEMPLATE404_2 |
수정은 개수가 바뀌지 않으므로 lockUser를 부르지 않는다. 동시 수정은 나중 저장이 덮어쓴다.
완료 조건
- 성공 응답과 DB 값,
editedAt갱신,lastUsedAt유지, 캐시 금지 헤더 - 같은 값 저장 시
editedAt·updated_at유지, 대소문자만 바꾸면 수정 - 자기 단축어 성공, 내 다른 활성 템플릿 409_1(자모 분리형·대소문자 포함), 휴지통 단축어 성공
- 실제 유니크 위반이
TEMPLATE409_1로 바뀌고 수정이 남지 않음 - 404 구분, 검증 순서(이름 → 단축어 → 내용), 토큰 없음
COMMON401_1 - 수정한 본문도 암호화해 저장
-
./gradlew build통과
참고
- [feat] 내 템플릿 상세 조회 API #49(PR feat: 내 템플릿 상세 조회 API (#49) #50) 위에 쌓는 작업이라 PR 기준 브랜치는
feat/49-template-detail이다 - 명세 11번 에러표의 404_1 설명에 "휴지통에 있는 템플릿"이 남아 있어 비고와 어긋난다. 비고를 따르고, 명세 수정은 이 이슈 범위가 아니다
- 12·13·14번 자체는 구현하지 않는다
Activity
refactor: 템플릿 서비스 의존성 필드 순서 정리 (#52)
refactor: 템플릿 서비스 필드 들여쓰기를 탭으로 수정 (#52)
refactor: 수정 중 휴지통 이동 경쟁을 허용하는 이유를 주석으로 남김 (#52)