Skip to content

Conversation

@SongJSeop
Copy link
Collaborator

@SongJSeop SongJSeop commented Nov 29, 2023

📎 이슈번호

📃 변경사항

유저 닉네임 검색 API에 Swagger 데코레이터 추가

사용하지 않는 파일 및 코드 삭제

  • app.controller.ts 삭제
  • app.controller.spec.ts 삭제
  • app.service.ts 삭제
  • app.e2e-spec.ts 삭제
  • app.module.ts에서 AppController, AppService 정보 삭제

ShareLink Entity 추가
User와 @OneToOne 관계 설정
User에 status 속성 추가(기본 값은 'private')
공유 상태 여부를 나타내는 UserShareStatus enum 추가
User Entity 수정하면서 관련 코드 수정

유저 공유 상태를 변경할 수 있는 PATCH /auth/status api 추가
status 요청에 지정된 값만 요청할 수 있도록 StatusValidationPipe 추가

유저 공유 링크를 조회할 수 있는 `GET /auth/sharelink' api 추가
api 요청이 들어오면 일단 서버는 쿠키에서 유저 정보를 읽음
만약 유저가 private인 상태다 → BadRequest 발생
아닌 경우는 데이터베이스에서 유저 정보로 링크 조회
만약 조회되는 링크가 없다면 새로 생성하여 데이터베이스에 저장하고 응답 메세지로 링크 반환

새로 생긴 api에 swagger 추가

🫨 고민한 부분

제가 구상한 순서는 다음과 같습니다.
프론트에서 유저의 공유 상태(공개, 링크만 공개, 비공개)를 변경 -> PATCH /auth/status
그 후 링크를 조회하고 싶으면 -> 'GET /auth/sharelink'

프론트에서 우선 유저 공유 상태를 변경 api를 요청하고, 그 다음에 공유 링크를 얻고 싶으면 다시 링크 조회 api를 요청하는 식으로 하는 쪽으로 구상했습니다.

링크는 uuid로 했습니다!!!

📌 중점적으로 볼 부분

🎇 동작 화면

우선 로그인�하여 쿠키를 발급!

유저 status 속성값 변경

PATCH http://localhost:3000/auth/status

body에 들어갈 정보들

  1. 미리 지정된 status값이 아닌 경우 ('public', 'only_link', 'private'이 아닌 경우)
{
    "status": "test"
}

400 BadRequest 에러 발생
스크린샷 2023-11-29 오후 10 34 36

  1. 현재 상태인 값으로 요청을 보냈을 경우
{
    "status": "private"
}

400 BadRequest 에러 발생
스크린샷 2023-11-29 오후 10 34 45

  1. 잘 변경되는 경우
{
    "status": "public"
}

유저 정보 반환
스크린샷 2023-11-29 오후 10 36 22

공유 링크 조회

GET http://localhost:3000/auth/sharelink
  1. 만약 private 사용자의 공유링크를 조회했을 경우

400 BadRequest 에러 발생
스크린샷 2023-11-29 오후 10 42 07

  1. 잘 조회되는 경우

링크 정보 반환
스크린샷 2023-11-29 오후 10 38 52

💫 기타사항

- 유저 검색 API에 Swagger 데코레이터 추가
- app.controller.ts 삭제
- app.controller.spec.ts 삭제
- app.service.ts 삭제
- app.e2e-spec.ts 삭제
- app.module.ts에서 AppController, AppService 정보 삭제
- share_link.entity.ts 추가
- user.entity.ts에 status속성, shareLink 속성 추가
- user.enum.ts에 UserShareStatus enum 추가
- 수정된 entity에 맞춰서 코드들 수정
- 유저의 공유 여부를 수정하는 changeStatus api 추가
- 공유 링크를 가져오는 getShareLink Api 구현
- changeStatus, getShareLink Api에 Swagger 데코레이터 추가
- CookieAuthGuard에서 req에 user정보를 담을 때 status도 담아주도록 수정
@SongJSeop SongJSeop added ✨ Feature 기능 개발 BE 백엔드 labels Nov 29, 2023
@SongJSeop SongJSeop requested a review from qkrwogk November 29, 2023 13:43
@SongJSeop SongJSeop self-assigned this Nov 29, 2023
Copy link
Collaborator

@qkrwogk qkrwogk left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

깔끔합니다!

프론트에서 공유링크 생성이 실제로 어떻게 구현될 진 모르겠지만,
사용자 관점에서 링크 생성 버튼을 누를 때 자동으로 공개로 status가 바뀌어도 좋을것 같아요!

근데 또 다시 생각해보니 그 일은 프론트에서 해주는 게(알아서 changeStatus요청 public 보내주고 화면에 변경된 것 표시해주는 게) 더 효율적일지도 모르겠네요! 잠깐 주절대 보았습니다 고생하셨습니다 준섭님 ㅎ ㅎ

@qkrwogk qkrwogk merged commit c2654ec into boostcampwm2023:be-develop Nov 30, 2023
@SongJSeop
Copy link
Collaborator Author

깔끔합니다!

프론트에서 공유링크 생성이 실제로 어떻게 구현될 진 모르겠지만, 사용자 관점에서 링크 생성 버튼을 누를 때 자동으로 공개로 status가 바뀌어도 좋을것 같아요!

근데 또 다시 생각해보니 그 일은 프론트에서 해주는 게(알아서 changeStatus요청 public 보내주고 화면에 변경된 것 표시해주는 게) 더 효율적일지도 모르겠네요! 잠깐 주절대 보았습니다 고생하셨습니다 준섭님 ㅎ ㅎ

ㅎㅎㅎ저도 그렇게 하려다가 그러면 하나의 api가 너무 무거워지고 신경쓸 것이 은근 많아지더라구요 변경할 것도 많고
오늘 안그래도 얘기 해보려고 했습니다 ㅎㅎ 바뀌면 또 바꾸겠습니다 하하

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

BE 백엔드 ✨ Feature 기능 개발

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants