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

Feat : 스터디룸 삭제 API #14

Merged
merged 39 commits into from
Jul 5, 2024

Conversation

Mouon
Copy link
Member

@Mouon Mouon commented Jul 4, 2024

요약 (Summary)

  • 스터디룸 삭제 API를 작성했습니다.
  • 맴버 아이디나 스터디룸 아이디에대한 예외처리에 집중해 보았습니다.
  • 스터디룸의 상태를 DELETE로 변경한 뒤 맴버스터디룸테이블에서도 해당 스터디룸의 관계를 모두 DELETE 하려했으나, 스터디룸 자체가 DELETE 되버리면 스터디룸이 조회되지않을것이고 Soft Delete의 목적이 데이터 복구의 안정성이라는 측면에서 스터디룸 테이블의 상태만 변경하고 관계는 유지해 두는것이 유리하다고 판단했습니다.

🔑 변경 사항 (Key Changes)

  • StudyroomRepository : StudyroomRepository 생성 후 deleteStudyroom, findById 메소드 작성했습니다.
  • MemberstudyroomRepository : findRoleByMemberIdAndStudyroomId 작성해서 맴버의 역할 찾음
  • StudyroomService : StudyroomService작성
    • deleteStudyroom : 방장이 스터디룸을 삭제하는 메소드 ( 상태를 삭제상태로 변경 )

📝 리뷰 요구사항 (To Reviewers)

  • 명세서 대로 반환되는지
스크린샷 2024-07-05 오전 1 25 29
  • 예외상황에서 적설한 예외가 발생하는지

확인 방법

.yml을 자신의 로컬에맞게 변경하세요

쿼리문

use linkode;

INSERT INTO avatar (created_at, modified_at, avatar_img, status) VALUES
('2024-06-30 12:00:00.000000', '2024-06-30 12:30:00.000000', 'img1.png', 'ACTIVE');
INSERT INTO avatar (created_at, modified_at, avatar_img, status) VALUES
('2024-06-30 12:00:00.000000', '2024-06-30 12:30:00.000000', 'img2.png', 'ACTIVE');

INSERT INTO member (created_at, modified_at, avatar_id, github_id, nickname, color,status) VALUES
('2024-06-30 12:00:00.000000', '2024-06-30 12:30:00.000000', 1, 'Mouon', '#FFFFF','User1', 'ACTIVE');
INSERT INTO member (created_at, modified_at, avatar_id, github_id, nickname, color,status) VALUES
('2024-06-30 12:00:00.000000', '2024-06-30 12:30:00.000000', 1, 'jsilver01', '#FFFFF','애플코드', 'ACTIVE');

INSERT INTO studyroom (created_at, modified_at, studyroom_name, studyroom_profile, status) VALUES
('2024-07-04 12:00:00.000000', '2024-07-04 12:00:00.000000', 'New Studyroom', 'Profile for New Studyroom', 'ACTIVE');

INSERT INTO studyroom (created_at, modified_at, studyroom_name, studyroom_profile, status) VALUES
('2024-07-04 12:00:00.000000', '2024-07-04 12:00:00.000000', 'New Studyroom 2', 'Profile for New Studyroom', 'ACTIVE');

INSERT INTO studyroom (created_at, modified_at, studyroom_name, studyroom_profile, status) VALUES
('2024-07-04 12:00:00.000000', '2024-07-04 12:00:00.000000', 'New Studyroom 3', 'Profile for New Studyroom', 'ACTIVE');


INSERT INTO member_studyroom (created_at, modified_at, member_id, studyroom_id, role, status) VALUES
('2024-07-04 12:00:00.000000', '2024-07-04 12:00:00.000000', 1, 1, 'CAPTAIN', 'ACTIVE');

INSERT INTO member_studyroom (created_at, modified_at, member_id, studyroom_id, role, status) VALUES
('2024-07-04 12:00:00.000000', '2024-07-04 12:00:00.000000', 1, 2, 'CREW', 'ACTIVE');

INSERT INTO member_studyroom (created_at, modified_at, member_id, studyroom_id, role, status) VALUES
('2024-07-04 12:00:00.000000', '2024-07-04 12:00:00.000000', 1, 3, 'CAPTAIN', 'ACTIVE');

INSERT INTO member_studyroom (created_at, modified_at, member_id, studyroom_id, role, status) VALUES
('2024-07-04 12:00:00.000000', '2024-07-04 12:00:00.000000', 2, 1, 'CAPTAIN', 'ACTIVE');

SELECT * FROM member_studyroom WHERE studyroom_id=2 AND member_id=1;
SELECT * FROM member_studyroom;
SELECT * FROM studyroom;

소셜로그인 주소

https://github.com/login/oauth/authorize?client_id=Ov23liH7OLp2842PXbKI&scope=user:email

API 요청 주소 [PATCH}

http://localhost:8080/studyroom/removal?studyroomId=1
http://localhost:8080/studyroom/removal?studyroomId=2
http://localhost:8080/studyroom/removal?studyroomId=3

studyroomId=2 에서는 방장이 아니라 삭제되지 않아야합니다.
요청 실패 로그 메세지
스크린샷 2024-07-05 오전 1 06 48

포스트맨 예시

스크린샷 2024-07-05 오전 12 14 10 스크린샷 2024-07-05 오전 12 37 00 스크린샷 2024-07-05 오전 12 55 48

워크벤치에서 상태가 변한 모습
스크린샷 2024-07-05 오전 12 56 36

Mouon and others added 30 commits July 1, 2024 18:03
추후 회원 기능 구현 완료되면 바뀔사항 많아서 대략 틀만 작성
일대다 관계여야하는데 오류가있어서 수정했습니다.
테이블 설계시 색상 속성이 누락된것 같아 추가했습니다.
gitignore 에 application-local.yml 추가
LoginController 에 있던 getAccessToken,getUserInfo 메소드 서비스로 옮김
isMember 로 하니까 인식을 잘못하는 오류발생
아직 jwt 반환은 미완성
아직 jwt 반환은 미완성
삭제요청한 스터디룸이 없는경우 500이 아닌 예외처리 메시지 반환하도록
기존에 githubId 로 토큰을 만들었는데 memberId 로 만들도록 수정
헤더로 들어온 토큰이 유효해야지만 해당 api 이용할 수 있도록 security 수정
JwtProvider jwtProvider;

@PatchMapping("/removal")
public BaseResponse<BaseExceptionResponseStatus> deleteStudyroom(@RequestHeader("Authorization") String authorization, @RequestHeader @RequestParam long studyroomId){
Copy link
Member

Choose a reason for hiding this comment

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

스터디룸id 는 리퀘스트 파람으로 받는거 맞나요?? @RequestHeader 도 같이 사용되어야하는건지 확인 부탁드립니다..!

Copy link
Member Author

@Mouon Mouon Jul 4, 2024

Choose a reason for hiding this comment

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

모두 맞는내용입니다!

오타가있습니다.

@jsilver01
Copy link
Member

먼저 데이터베이스 무결성을 위해서 스터디룸만 delete 를 하고 멤버_스터디룸 은 active 로 데이터를 살려두는 것은 문제가 있어보입니다. 이 부분 고민이 필요할 것 같습니다.

@Mouon
Copy link
Member Author

Mouon commented Jul 5, 2024

먼저 데이터베이스 무결성을 위해서 스터디룸만 delete 를 하고 멤버_스터디룸 은 active 로 데이터를 살려두는 것은 문제가 있어보입니다. 이 부분 고민이 필요할 것 같습니다.

삭제시에 멤버_스터디룸또한 변경하도록 하였습니다!

@jsilver01
Copy link
Member

별거는 아닌데 쿼리문에 nickname 이랑 color 순서가 바뀌게 작성되어 있어서 테이블에 바뀐 상태로 들어갑니다! 지금 pr 에서 문제는 아니지만 눈에 보여서..
나머지는 정상 작동되는 것 확인하였습니다! 수고하셨습니다~😊

Mouon added 2 commits July 5, 2024 11:30
…스터디룸-삭제-API

# Conflicts:
#	src/main/java/com/linkode/api_server/common/response/BaseResponse.java
#	src/main/java/com/linkode/api_server/controller/StudyroomController.java
#	src/main/java/com/linkode/api_server/repository/MemberstudyroomRepository.java
#	src/main/java/com/linkode/api_server/repository/StudyroomRepository.java
#	src/main/java/com/linkode/api_server/service/StudyroomService.java
@Mouon
Copy link
Member Author

Mouon commented Jul 5, 2024

별거는 아닌데 쿼리문에 nickname 이랑 color 순서가 바뀌게 작성되어 있어서 테이블에 바뀐 상태로 들어갑니다! 지금 pr 에서 문제는 아니지만 눈에 보여서.. 나머지는 정상 작동되는 것 확인하였습니다! 수고하셨습니다~😊

앗 확인했습니다! 감사합니다!

@Mouon Mouon merged commit e2375f8 into develop Jul 5, 2024
@Mouon Mouon deleted the LINKODE-16-BE-API-스터디룸-삭제-API branch July 5, 2024 02:39
@Mouon Mouon added the Feature Make Feat label Sep 21, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Feature Make Feat
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants