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 및 공유 링크 조회 API 추가 #194

Merged
merged 8 commits into from
Nov 30, 2023

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 보내주고 화면에 변경된 것 표시해주는 게) 더 효율적일지도 모르겠네요! 잠깐 주절대 보았습니다 고생하셨습니다 준섭님 ㅎ ㅎ

packages/server/src/auth/auth.service.ts Show resolved Hide resolved
@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