Skip to content

feat: 내 템플릿 목록 API (#66) - #68

Open
oTAETAEo wants to merge 6 commits into
developfrom
feat/66-template-list
Open

oTAETAEo wants to merge 6 commits into
developfrom
feat/66-template-list

Conversation

@oTAETAEo

@oTAETAEo oTAETAEo commented Nov 5, 2026 •

Copy link
Copy Markdown
Contributor

관련 이슈

작업 내용

명세 8번 GET /api/v1/templates를 구현했습니다. 인증된 본인의 휴지통 제외 템플릿 전체를 생성 순(템플릿 ID 오름차순)으로 내려주고, 페이지는 나누지 않습니다.

커밋별로 보기

  1. 레포지토리: findAllByUserIdAndDeletedAtIsNullOrderByIdAsc (메서드 추가만)
  2. 서비스: TemplateQueryService.getTemplates(Long userId), TemplateListResult, TemplateListItemResult
  3. API: GET /api/v1/templates, TemplateListResponse, TemplateListItemResponse, TEMPLATE200_1
  4. 컨트롤러의 서비스 호출을 결과 변수로 분리 (다른 메서드와 같은 모양)
  5. develop 병합(feat: 휴지통 템플릿 복구 API (#67) #69 휴지통 복구), 복구 테스트를 실제 복구 API로 교체
  • variables는 복호화한 본문에서 TemplateVariableExtractor.extract로 뽑습니다.
  • totalCount는 명세 타입(Integer)에 맞춰 int이고, 목록 길이로 채웁니다. 개수 쿼리를 따로 두지 않았습니다.
  • v0.7의 sort 파라미터와 TEMPLATE400_8은 v0.8에서 삭제되어 만들지 않았습니다.

명세와 달라진 점

없음

테스트

  • TemplateListControllerTest (테스트컨테이너 MySQL)
    • 필드 순서, +09:00, no-store
    • ID 오름차순, 새 템플릿은 맨 뒤
    • 수정·사용 후에도 순서 그대로: 가운데를 고치고 셋째를 사용 기록해 최근 수정순·오래된 수정순·최근 사용순이면 순서가 달라지게 했습니다
    • 휴지통에서 되돌린 템플릿은 원래 자리로: 실제 복구 API(POST /api/v1/trash/templates/{id}/restore)를 부른 뒤 목록을 확인합니다
    • 휴지통·다른 회원 템플릿 제외, 0개면 totalCount: 0·빈 배열
    • 본문 복호화, 변수 목록 첫 등장 순·중복 제거, 사용 이력 없으면 lastUsedAt null
    • 토큰 없음 COMMON401_1
  • TemplateListRepositoryTest: 범위(휴지통·다른 회원 제외)와 ID 오름차순, 빈 목록
  • TemplateQueryServiceTest (모키토): 레포지토리 순서 유지, 개수, 변수 목록, 빈 목록
  • 전체 963개 통과 (feat: 휴지통 템플릿 복구 API (#67) #69 병합 후)

확인 체크리스트

  • ./gradlew build 통과
  • 테스트 포함
  • 변경 400줄 안팎 → 약 500줄 (본 코드 약 120줄, 테스트 약 380줄)
  • 병합된 마이그레이션 수정 안 함
  • 비밀 값·개인정보 없음
  • global 공통 코드 변경 없음

리뷰어에게

  1. 정렬은 인덱스로 처리됩니다: MySQL 8.4에서 EXPLAIN으로 확인했습니다 (20명·600행, ANALYZE 후). WHERE user_id = ? AND deleted_at IS NULL ORDER BY id ASC는 type=ref, key=idx_templates_user_deleted, ref=const,const, Extra Using index condition이고 Using filesort가 없습니다. ERD 메모대로 인덱스 끝의 기본 키 순서를 그대로 씁니다. 인덱스·마이그레이션은 추가하지 않았고, 확인용 임시 테스트는 지웠습니다
  2. 응답 객체를 공용화하지 않았습니다: 9·11번 응답과 필드가 같지만, 화면마다 각자 둔다는 기존 방침을 따랐습니다

🤖 Generated with Claude Code

@oTAETAEo oTAETAEo added feature 기능 개발 template 내 템플릿·휴지통 labels Nov 5, 2026
@oTAETAEo oTAETAEo self-assigned this Nov 5, 2026
@oTAETAEo oTAETAEo changed the title [feat] 내 템플릿 목록 API feat: 내 템플릿 목록 API (#66) Nov 5, 2026
@oTAETAEo
oTAETAEo marked this pull request as ready for review November 7, 2026 04:36
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

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

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[feat] 내 템플릿 목록 API

1 participant