-
Notifications
You must be signed in to change notification settings - Fork 0
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
✨ 기록 조회 및 생성 API & Util 및 사용자 정의 함수 적용 #91
Merged
Conversation
This file contains 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
heejinnn
approved these changes
Feb 1, 2024
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
구현하시느라 수고 많으셨어요~~!!
6 tasks
Merged
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.
작업 이유
pet_id
없이 Schedule 등록 가능하도록 API 수정수정 사항
1️⃣ 일정 등록 시 URL 경로 상의
pet_id
제거/api/v2/users/{user_id}/schedules
/api/v2/schedules
petIds
필드에 삽입petIds
의 반려동물 중 하나라도 관리 권한이 없는 경우403 FORBIDDEN
2️⃣ 일정 관련 API 항목에서
user_id
제거 (2개 변동)🟡 일정 리스트 조회
/api/v2/users/{user_id}/pets/{pet_id}/schedules
/api/v2/users/{user_id}/pets/{pet_id}/schedules?count=
/api/v2/pets/4/schedules
/api/v2/pets/4/schedules?count=
🟡 관리 중인 모든 반려동물의 임의의 날짜 조회
api/v2/users/{user_id}/schedules?year=&month=&day=
api/v2/accounts/{user_id}/schedules?year=&month=&day=
3️⃣ 기존에 등록된 반려동물의 부모 카테고리 생성
작업 사항
1️⃣ 서브 메모 카테고리 저장
POST /api/v2/pets/{pet_id}/root-memo-categories/{root_memo_category_id}
sub_memo_category_id
를 전송하는 경우403 FORBIDDEN
201 CREATED
2️⃣ 카테고리 리스트 조회
GET /api/v2/pets/{pet_id}/memo-categories/{memo_category_id}
memo_category_id
는 상위/하위 모두 가능합니다.type=ROOT
이며,subMemoCategories
필드가 반드시 존재합니다.type=SUB
이며,subMemoCategories
필드가 존재하지 않습니다.3️⃣ 유저의 모든 메모 카테고리 리스트 조회
GET /api/v2/accounts/{user_id}/memo-categories
data
필드 이후 최상위 필드는 언제나rootMemoCategories
입니다.(2)
와 동일한 포맷을 따릅니다.4️⃣ 메모 등록
POST /api/v2/pets/3/memo-categories/4/memos
201 CREATED
5️⃣ 메모 단건 조회
GET /api/v2/pets/{pet_id}/memo-categories/{memo_category_id}/memos/{memo_id}
memo_id
가memo_category_id
에 속해있지 않거나,memo_category_id
가pet_id
의 카테고리가 아닌 경우 모두403 FORBIDDEN
(따로 작성하지 않은 다른 api도 모두 동일한 규칙을 지닙니다.)categorySuffix
필드 주의 사항 (필독!!!!)memo 조회 시, 해당 메모가 등록된 카테고리명은 줄 건데
루트/서브
포맷이 아님.따라서 카테고리 이름이 반려동물과 일치할 경우엔 그냥 그대로 쓰고, 아니면
반려동물이름/categoryNameSuffix
로 문자열 생성해주어야 함.메모를 조회하는 경우 반려동물을 통해서 확인하는 경우와 카테고리 페이지에서 확인하는 경우가 있는데,
두 가지 모두 반려동물 이름을 추론할 수 있다는 가정 하에 작성. (불가능하면 말씀해주세요)
6️⃣ 카테고리 내 메모 리스트 조회 및 검색 (Pagenation 적용)
GET /api/v2/pets/{pet_id}/memo-categories/{memo_category_id}/memos
GET /api/v2/pets/{pet_id}/memo-categories/{memo_category_id}/memos?search=
size = 15, page = 0, sort = "memo.createdAt", direction = Sort.Direction.DESC
search
param 미입력 시 전체 조회, 입력 시 해당 단어 기반 검색🟡 Pagenation QueryParameter 사용법
size
: 한 번에 불러올 데이터 크기 설정 (기본값은 API 요청 참고)page
: 불러올 페이지 설정 (가장 처음은 0)sort
: 정렬 방식 (memo.id, mamoCategory.createdAt 등등)direction
: 정렬 방향 (ASC, DESC)GET /api/v2/pets/{pet_id}/memo-categories/{memo_category_id}/memos?size=2&page=1&sort=memo.id,ASC
7️⃣ 반려동물의 가장 최근 메모 조회 (Pagenation 적용)
GET /api/v2/pets/3/memos
size = 5, page = 0, sort = "memo.createdAt", direction = Sort.Direction.DESC
개발 이슈
1️⃣ MySQL
Full Text Index
설정Full Text Index
설정title
과content
필드를 포함하여 전체 검색 가능boolean mode
탐색 선정CREATE FULLTEXT INDEX memo_title_content_fulltext_index ON memo(title, content);
2️⃣ MySQL 방언 사용을 위한 Spring Boot 사용자 정의 함수
match against
와left
사용자 정의 함수 작성3️⃣ 무한 스크롤 기능을 위한 Slice 및 관련 Util 클래스 구현
pageSize + 1
만큼 데이터 조회pageSize + 1
에 데이터가 있다면hasNext = true
로 설정한 후, 잉여 데이터 제거4️⃣ Pageable
OrderSpecifier
추론 및 편의 메서드를 위한 Util 클래스 구현Pageable
의sort
규칙을 적용하기 위한OrderSpecifier
타입 추론 메서드이슈 연결
close #90 #83