Skip to content

[feat] 휴지통 템플릿 영구 삭제 · 비우기 API #70

Open

Description

@oTAETAEo

관련 명세

  • docs/s1-api-spec.md 17번 DELETE /api/v1/trash/templates/{templateId} (BIN-06, 정책표 7)
  • docs/s1-api-spec.md 18번 DELETE /api/v1/trash/templates (BIN-02, BIN-03, 정책표 7)
  • TRASH200_3 템플릿을 영구 삭제했습니다.
  • TRASH200_4 휴지통을 비웠습니다.
  • TRASH404_1 휴지통에서 템플릿을 찾을 수 없어요.

작업 내용

휴지통 템플릿을 하나씩 또는 한꺼번에 영구 삭제한다. 복구할 수 없다.

  • TrashController: DELETE /api/v1/trash/templates/{templateId} → TrashPurgeResponse(templateId), DELETE /api/v1/trash/templates → TrashEmptyResponse(deletedCount)
  • TrashCommandService: 개별 영구 삭제·비우기 쓰기 메서드
  • TemplateRepository: 본인 소유 + 휴지통 조건의 @Modifying 삭제 쿼리 (00:10 정리 배치가 같은 모양을 쓸 수 있게 작게)

동작 규칙

구분 내용
삭제 방식 엔티티를 읽지 않고 삭제 쿼리로 지운다. 본문 복호화에 실패하는 행도 지울 수 있어야 한다 (#55 리뷰 합의)
17번 id·user_id·deleted_at is not null 조건 삭제. 지운 행이 0이면 TRASH404_1 (없는 ID, 다른 회원, 활성 템플릿, 이미 영구 삭제)
18번 user_id·deleted_at is not null 조건 삭제. 지운 행 수를 deletedCount로. 비어 있어도 성공(0)
외래키 templates를 참조하는 외래키 없음 (ERD v0.8)

완료 조건

  • 17번: 성공 후 행 삭제, 응답·no-store, 없는 ID·다른 회원·활성·두 번째 삭제 TRASH404_1, 다른 행 유지, 숫자가 아닌 ID COMMON400_1, 토큰 없음 COMMON401_1
  • 18번: 내 휴지통만 삭제·deletedCount, 비어 있으면 0, 활성·다른 회원 휴지통 유지, 토큰 없음 COMMON401_1
  • 복호화가 실패하는 행도 17·18번으로 삭제
  • 삭제 후 휴지통 목록 totalCount·항목, 지운 단축어로 새 템플릿 생성
  • 동시 요청: 같은 템플릿 영구 삭제 2건, 복구 + 영구 삭제
  • 서비스·레포지토리 테스트
  • ./gradlew build 통과

참고

Activity

  1. self-assigned this
    on Nov 5, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

Labels

feature기능 개발template내 템플릿·휴지통

Type

No type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions