Skip to content
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

[BE] ✨ : api path 변경 #373

Merged

Conversation

twoo1999
Copy link
Collaborator

❗ 배경

작업 배경에 대한 설명을 작성합니다.
Issue에 대한 링크를 첨부합니다.

🔧 작업 내역

작업한 내용들을 나열합니다.
간결하게 리스트 업하고, 자세한 설명은 아래 리뷰 노트에서 합니다.

api path 수정

swagger 수정

coordinate range를 이용한 여정 조회 비지니스 로직 수정

casecade 적용

📝 리뷰 노트

작업 내역에 대한 자세한 설명을 작성합니다.

api path 수정

기존의 api는 api만으로 어떤 작업을 수행할 지 모호했습니다.
기존 body에 들어가는 id를 path로 적용함으로써 테이블의 관계를 api를 통해 보다 더 잘 표현할 수 있도록 했습니다.

  1. 여정 시작
  • POST journey/start
  • POST user/{userId}/journey/start
  1. 여정 종료
  • POST journey/end
  • POST journey/{journeyId}/end
  1. 여정 조회(coordiante range)
  • GET journey?userId&minCoordinate&maxCoordinate
  • GET user/{userId}/journey?minCoordinate&maxCoordinate
  1. 마지막 여정 진행 여부 확인
  • GET journey/last
  • GET user/{userId}/journey?minCoordinate&maxCoordinate

swagger 수정

api version 2 적용에 따라 기존 api에 적용하던 dto 및 entity를 새로 만들어 적용한 api가 존재했습니다.
그래서 swagger의 전반적인 수정을 진행했습니다.

기존 api 문서는 table 입출력을 기준으로 나눠 api 마다 api tag를 달아두면 따로 수정할 필요가 없었습니다.
이번 api 변경에 따라 테이블을 기준으로 나누는 것은 api 문서의 가독성을 해친다고 판단해서 controller router마다 api tag를 따로 지정해 분류했습니다.

coordinate range를 이용한 여정 조회 비지니스 로직 수정

기존 range를 통한 journey 조회 시 진행 중인 journey가 있을 시 오류가 발생했습니다.

원인은 진행 중인 journey는 모든 필수 데이터가 채워지지 않아 null의 데이터를 통해 로직을 수행하는 과정에서 생겼습니다.
그래서 typeorm의 NOT(IsNull())f를 통해 완료되지 않은 journey는 불러오지 않도록 수정했습니다.

casecade 적용

journey를 삭제하는 과정에서 foreign key 설정에서 on delete가 restrict로 되어 있어 journey 삭제 로직이 오류를 발생시켰습니다.

entity에 casecade를 적용하고 mysql의 workbench를 통해 restrict에서 casecade로 변경하여 적용했습니다.

📸 스크린샷

수정 전 : POST journey/

수정 후 : POST user/{userId}/journey
수정 전 : 데이터 저장만 수행

수정 후 : 해당하는 user가 있는지 확인 후 예외처리
수정 전 : user/{userId}/journey

수정 후 : user/{userId}/journey/start
수정 전 : journey/end

수정 후 : journey/{journeyId}/end
수정 전 : GET journey?userId&minCoordinate&maxCoordinate

수정 후 :GET user/{userId}/journey?minCoordinate&maxCoordinate
수정 전 : GET journey/last

수정 후 :GET user/{userId}/journey/last
수정 전:
기록 중인 journey가 있다면 오류 발생

수정 후:
기록 중인 journey가 있다면(title=null) 데이터 조회 시 is not null을 이용해 필터를 적용하여 데이터 조회 동작
수정 전:
1대다 관계에서 삭제를 진행하면 foreign key에 의해 delete 동작이 오률를 발생함

수정 후:
entity에서 casecade를 적용 및 mysql 데이터베이스에서 delete 명령을 restrict에서 casecade로 수정
@twoo1999 twoo1999 added the ♻️ 리팩토링 코드 동작 방식 변경, 리팩토링 label Feb 19, 2024
@twoo1999 twoo1999 added this to the 🏃‍♂️ 여정 기록 milestone Feb 19, 2024
@twoo1999 twoo1999 self-assigned this Feb 19, 2024
@twoo1999 twoo1999 linked an issue Feb 19, 2024 that may be closed by this pull request
11 tasks
@twoo1999 twoo1999 merged commit a53f02d into BE/stroy/v2-modify-spot-table Feb 19, 2024
@twoo1999 twoo1999 deleted the BE/task/modify-api-path-and-dto branch February 19, 2024 17:20
@twoo1999 twoo1999 mentioned this pull request Feb 19, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
♻️ 리팩토링 코드 동작 방식 변경, 리팩토링
Projects
Status: ✅ 완료
Development

Successfully merging this pull request may close these issues.

v2 spot table 수정
1 participant