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 추가 #641

Merged
merged 7 commits into from
Aug 18, 2024

Conversation

seulgi99
Copy link
Contributor

@seulgi99 seulgi99 commented Aug 18, 2024

🌱 관련 이슈

📌 작업 내용 및 특이사항

  • 스터디 공지 생성, 수정, 삭제 기능 추가하였습니다
  • 해당 API들의 경우 멘토권한검증을 제외한 테스트가 필요하지 않을것이라 판단해서 테스트는 다로 추가 하지 않았습니다

📝 참고사항

📚 기타

Summary by CodeRabbit

  • 새로운 기능

    • 멘토 스터디 관리 시스템에 대한 스터디 알림 및 공지 생성, 업데이트 및 삭제를 위한 API 엔드포인트 추가.
    • 스터디 알림을 위한 데이터 전송 객체(DTO) StudyNotificationRequest 및 스터디 공지 생성/업데이트를 위한 StudyAnnouncementCreateUpdateRequest 정의.
    • 스터디 알림과 공지의 CRUD 인터페이스 완비.
  • 버그 수정

    • 스터디 알림 및 공지 관리 시 더욱 명확한 오류 메시지 제공을 위한 오류 코드 추가.
  • 문서화

    • Swagger 라이브러리와 함께 API 문서화를 위한 필드 설명 추가.

@seulgi99 seulgi99 added the ✨ feature 새로운 기능 추가 및 수정 label Aug 18, 2024
@seulgi99 seulgi99 self-assigned this Aug 18, 2024
@seulgi99 seulgi99 requested a review from a team as a code owner August 18, 2024 05:51
Copy link

coderabbitai bot commented Aug 18, 2024

Walkthrough

이번 변경 사항은 멘토 스터디 관리 시스템에 스터디 공지 및 알림 기능을 추가합니다. 사용자는 스터디와 관련된 알림과 공지를 생성, 수정 및 삭제할 수 있는 API 엔드포인트를 통해 효과적으로 관리할 수 있습니다.

Changes

파일 경로 변경 요약
src/main/java/com/gdschongik/gdsc/domain/study/api/MentorStudyController.java 스터디 알림 및 공지를 위한 새로운 API 엔드포인트 추가.
src/main/java/com/gdschongik/gdsc/domain/study/application/MentorStudyService.java 스터디 알림 및 공지 관리를 위한 새로운 서비스 메서드 추가.
src/main/java/com/gdschongik/gdsc/domain/study/dao/StudyNotificationRepository.java 스터디 알림 관리를 위한 새로운 레포지토리 인터페이스 추가.
src/main/java/com/gdschongik/gdsc/domain/study/dao/StudyAnnouncementRepository.java 스터디 공지 관리를 위한 새로운 레포지토리 인터페이스 추가.
src/main/java/com/gdschongik/gdsc/domain/study/domain/StudyNotification.java 스터디 공지 클래스에 빌더 패턴 적용 및 필드 수정 메서드 추가.
src/main/java/com/gdschongik/gdsc/domain/study/dto/request/StudyNotificationRequest.java 스터디 알림 요청을 위한 DTO 클래스를 새로 정의.
src/main/java/com/gdschongik/gdsc/domain/study/dto/request/StudyAnnouncementCreateUpdateRequest.java 스터디 공지 요청을 위한 DTO 클래스를 새로 정의.
src/main/java/com/gdschongik/gdsc/global/exception/ErrorCode.java 스터디 알림 및 공지 검색 실패에 대한 새로운 오류 코드 추가.

Sequence Diagram(s)

sequenceDiagram
    participant User
    participant Controller
    participant Service
    participant NotificationRepository

    User->>Controller: POST /{studyId}/notifications
    Controller->>Service: createStudyNotification(studyId, request)
    Service->>NotificationRepository: save(notification)
    NotificationRepository-->>Service: confirmation
    Service-->>Controller: notification created
    Controller-->>User: 201 Created
Loading
sequenceDiagram
    participant User
    participant Controller
    participant Service
    participant NotificationRepository

    User->>Controller: PATCH /notifications/{studyNotificationId}
    Controller->>Service: updateStudyNotification(studyNotificationId, request)
    Service->>NotificationRepository: findById(studyNotificationId)
    NotificationRepository-->>Service: notification
    Service->>NotificationRepository: save(updatedNotification)
    NotificationRepository-->>Service: confirmation
    Service-->>Controller: notification updated
    Controller-->>User: 200 OK
Loading
sequenceDiagram
    participant User
    participant Controller
    participant Service
    participant NotificationRepository

    User->>Controller: DELETE /notifications/{studyNotificationId}
    Controller->>Service: deleteStudyNotification(studyNotificationId)
    Service->>NotificationRepository: delete(studyNotificationId)
    NotificationRepository-->>Service: confirmation
    Service-->>Controller: notification deleted
    Controller-->>User: 204 No Content
Loading

Assessment against linked issues

Objective Addressed Explanation
스터디 공지 및 알림 추가, 수정, 삭제 API 구현 (#580)
스터디 알림 및 공지 요청 및 응답 DTO 정의 (#580)
각 API에 대해 적절한 오류 처리 구현 (#580)

Poem

🐇
스터디 알림과 공지의 향연,
멘토와 함께하는 즐거운 순간.
생성, 수정, 삭제의 마법,
모두 함께하는 배움의 길! 🌼


Thank you for using CodeRabbit. We offer it for free to the OSS community and would appreciate your support in helping us grow. If you find it useful, would you consider giving us a shout-out on your favorite social media?

Share
Tips

Chat

There are 3 ways to chat with CodeRabbit:

  • Review comments: Directly reply to a review comment made by CodeRabbit. Example:
    • I pushed a fix in commit <commit_id>.
    • Generate unit testing code for this file.
    • Open a follow-up GitHub issue for this discussion.
  • Files and specific lines of code (under the "Files changed" tab): Tag @coderabbitai in a new review comment at the desired location with your query. Examples:
    • @coderabbitai generate unit testing code for this file.
    • @coderabbitai modularize this function.
  • PR comments: Tag @coderabbitai in a new PR comment to ask questions about the PR branch. For the best results, please provide a very specific query, as very limited context is provided in this mode. Examples:
    • @coderabbitai generate interesting stats about this repository and render them as a table.
    • @coderabbitai show all the console.log statements in this repository.
    • @coderabbitai read src/utils.ts and generate unit testing code.
    • @coderabbitai read the files in the src/scheduler package and generate a class diagram using mermaid and a README in the markdown format.
    • @coderabbitai help me debug CodeRabbit configuration file.

Note: Be mindful of the bot's finite context window. It's strongly recommended to break down tasks such as reading entire modules into smaller chunks. For a focused discussion, use review comments to chat about specific files and their changes, instead of using the PR comments.

CodeRabbit Commands (invoked as PR comments)

  • @coderabbitai pause to pause the reviews on a PR.
  • @coderabbitai resume to resume the paused reviews.
  • @coderabbitai review to trigger an incremental review. This is useful when automatic reviews are disabled for the repository.
  • @coderabbitai full review to do a full review from scratch and review all the files again.
  • @coderabbitai summary to regenerate the summary of the PR.
  • @coderabbitai resolve resolve all the CodeRabbit review comments.
  • @coderabbitai configuration to show the current CodeRabbit configuration for the repository.
  • @coderabbitai help to get help.

Additionally, you can add @coderabbitai ignore anywhere in the PR description to prevent this PR from being reviewed.

CodeRabbit Configuration File (.coderabbit.yaml)

  • You can programmatically configure CodeRabbit by adding a .coderabbit.yaml file to the root of your repository.
  • Please see the configuration documentation for more information.
  • If your editor has YAML language server enabled, you can add the path at the top of this file to enable auto-completion and validation: # yaml-language-server: $schema=https://coderabbit.ai/integrations/schema.v2.json

Documentation and Community

  • Visit our Documentation for detailed information on how to use CodeRabbit.
  • Join our Discord Community to get help, request features, and share feedback.
  • Follow us on X/Twitter for updates and announcements.

Copy link

Job Summary for Gradle

Check Style and Test to Develop :: build-test
Gradle Root Project Requested Tasks Gradle Version Build Outcome Build Scan®
gdsc check 8.5 Build Scan published

Copy link

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

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

Actionable comments posted: 0

Review details

Configuration used: CodeRabbit UI
Review profile: CHILL

Commits

Files that changed from the base of the PR and between e48c72d and 50375a4.

Files selected for processing (7)
  • src/main/java/com/gdschongik/gdsc/domain/study/api/MentorStudyController.java (2 hunks)
  • src/main/java/com/gdschongik/gdsc/domain/study/application/MentorStudyService.java (2 hunks)
  • src/main/java/com/gdschongik/gdsc/domain/study/dao/StudyNotificationRepository.java (1 hunks)
  • src/main/java/com/gdschongik/gdsc/domain/study/dao/StudyRepository.java (1 hunks)
  • src/main/java/com/gdschongik/gdsc/domain/study/domain/StudyNotification.java (2 hunks)
  • src/main/java/com/gdschongik/gdsc/domain/study/dto/request/StudyNotificationRequest.java (1 hunks)
  • src/main/java/com/gdschongik/gdsc/global/exception/ErrorCode.java (1 hunks)
Additional comments not posted (13)
src/main/java/com/gdschongik/gdsc/domain/study/dto/request/StudyNotificationRequest.java (1)

6-8: 잘 작성된 DTO입니다.

StudyNotificationRequest는 공지 제목과 링크를 포함하는 간단한 DTO로, @NotBlank@Schema 어노테이션을 적절하게 사용하여 유효성 검사와 API 문서화를 지원합니다.

src/main/java/com/gdschongik/gdsc/domain/study/dao/StudyNotificationRepository.java (1)

11-13: getById 메서드의 예외 처리

getById 메서드는 findById를 사용하여 엔티티를 검색하고, 찾지 못할 경우 CustomException을 던지는 방식으로 예외를 처리합니다. 이는 엔티티가 없을 때 명확한 예외를 제공하는 좋은 접근 방식입니다.

src/main/java/com/gdschongik/gdsc/domain/study/dao/StudyRepository.java (1)

13-15: getById 메서드 추가

getById 메서드는 Study 엔티티를 검색할 때 명확한 예외를 제공하여 코드의 안정성을 높입니다. STUDY_NOT_FOUND 예외 코드를 사용하여 적절한 에러 처리를 구현했습니다.

src/main/java/com/gdschongik/gdsc/domain/study/domain/StudyNotification.java (3)

36-41: Builder 패턴 추가

@Builder 어노테이션을 사용하여 StudyNotification 객체의 인스턴스화를 보다 제어된 방식으로 수행할 수 있게 되었습니다. 이는 객체 생성 로직을 캡슐화하고 코드 가독성을 향상시킵니다.


43-45: 정적 팩토리 메서드 추가

createStudyNotification 메서드를 통해 StudyNotification 인스턴스를 생성할 수 있습니다. 이는 빌더 패턴의 사용을 촉진하며 객체 생성의 편의성을 제공합니다.


47-50: 업데이트 메서드 추가

update 메서드를 통해 StudyNotification 객체의 titlelink 필드를 수정할 수 있습니다. 이는 객체의 상태를 명확하게 변경할 수 있는 방법을 제공합니다.

src/main/java/com/gdschongik/gdsc/domain/study/api/MentorStudyController.java (3)

44-50: 스터디 공지 생성 엔드포인트 추가

새로운 POST 엔드포인트를 통해 특정 스터디에 대한 공지를 생성할 수 있습니다. 요청 객체는 유효성 검사를 거친 후 서비스 계층에서 처리됩니다.


52-58: 스터디 공지 수정 엔드포인트 추가

PATCH 엔드포인트를 통해 기존 공지를 수정할 수 있습니다. 요청 객체는 유효성 검사를 거친 후 서비스 계층에서 처리됩니다.


60-65: 스터디 공지 삭제 엔드포인트 추가

DELETE 엔드포인트를 통해 공지를 삭제할 수 있습니다. 공지 ID를 기반으로 삭제 작업이 수행됩니다.

src/main/java/com/gdschongik/gdsc/domain/study/application/MentorStudyService.java (3)

53-65: 스터디 공지 생성 메서드 추가

createStudyNotification 메서드는 새로운 스터디 공지를 생성합니다. 멘토 권한을 확인한 후 공지를 생성하고 저장합니다. 성공 시 로그가 생성됩니다.


67-79: 스터디 공지 수정 메서드 추가

updateStudyNotification 메서드는 기존 스터디 공지를 수정합니다. 공지를 ID로 조회한 후 멘토 권한을 확인하고 공지를 업데이트합니다. 성공 시 로그가 생성됩니다.


81-92: 스터디 공지 삭제 메서드 추가

deleteStudyNotification 메서드는 특정 스터디 공지를 삭제합니다. 멘토 권한을 확인한 후 공지를 삭제하고 성공 시 로그가 생성됩니다.

src/main/java/com/gdschongik/gdsc/global/exception/ErrorCode.java (1)

127-127: 새로운 오류 코드 추가 확인.

STUDY_NOTIFICATION_NOT_FOUND 오류 코드는 HttpStatus.NOT_FOUND와 함께 사용되며, "존재하지 않는 스터디 공지입니다."라는 메시지를 제공합니다. 이는 스터디 공지와 관련된 오류 응답의 명확성을 높여줍니다.

Copy link
Member

@uwoobeat uwoobeat left a comment

Choose a reason for hiding this comment

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

공지사항의 경우 notification보다 announcement가 더 적절한 워딩일 것 같습니다

Copy link
Member

@AlmondBreez3 AlmondBreez3 left a comment

Choose a reason for hiding this comment

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

스터디 공지사항은 별다른 검증 조건이 없나용??
테스트도 작성해주세요~

Copy link

Job Summary for Gradle

Check Style and Test to Develop :: build-test
Gradle Root Project Requested Tasks Gradle Version Build Outcome Build Scan®
gdsc check 8.5 Build Scan published

Copy link
Member

@AlmondBreez3 AlmondBreez3 left a comment

Choose a reason for hiding this comment

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

lgtm

Copy link

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

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

Actionable comments posted: 0

Outside diff range, codebase verification and nitpick comments (3)
src/main/java/com/gdschongik/gdsc/domain/study/api/MentorStudyController.java (1)

61-65: 스터디 공지 삭제 API 추가

스터디 공지 삭제 기능이 추가되었습니다. 삭제 요청은 일반적으로 성공 시 204 No Content 상태 코드를 반환하는 것이 일반적입니다. 현재는 200 OK를 반환하고 있으므로, 필요에 따라 상태 코드를 조정할 수 있습니다.

- return ResponseEntity.ok().build();
+ return ResponseEntity.noContent().build();
src/main/java/com/gdschongik/gdsc/domain/study/application/MentorStudyService.java (2)

67-79: StudyAnnouncement.update 메서드에 유효성 검사 추가 필요

현재 update 메서드는 단순히 titlelink 값을 할당하고 있습니다. 데이터 무결성을 보장하기 위해 유효성 검사를 추가하는 것이 좋습니다.

  • StudyAnnouncement 클래스의 update 메서드에서 titlelink에 대한 유효성 검사를 추가하세요. 예를 들어, null 또는 빈 문자열을 허용하지 않는 등의 검사를 고려할 수 있습니다.
Analysis chain

코드 변경 사항이 적절합니다.

스터디 공지 수정 메서드는 멘토 권한을 확인하고 로그를 남기는 등 올바르게 동작합니다.

다만, StudyAnnouncement.update 메서드가 필요한 모든 유효성 검사를 수행하는지 확인하세요.

Scripts executed

The following scripts were executed for the analysis:

Script:

#!/bin/bash
# Description: Verify the implementation of `update` method in `StudyAnnouncement` class.

# Test: Search for the method implementation. Expect: Proper validation logic.
ast-grep --lang java --pattern $'class StudyAnnouncement {
  $$$
  public void update($_, $_) {
    $$$
  }
  $$$
}'

Length of output: 117


Script:

#!/bin/bash
# Description: Use rg to search for the `update` method in the `StudyAnnouncement` class.

# Test: Search for the `update` method in the `StudyAnnouncement` class.
rg 'class StudyAnnouncement' -A 20 | rg 'public void update'

Length of output: 62


Script:

#!/bin/bash
# Description: Search for all methods in the `StudyAnnouncement` class to verify its implementation.

# Test: Search for the `StudyAnnouncement` class and list all its methods.
rg 'class StudyAnnouncement' -A 50 | rg 'public '

Length of output: 636


Script:

#!/bin/bash
# Description: Extract the full implementation of the `update` method in the `StudyAnnouncement` class.

# Test: Extract the `update` method implementation to verify validation logic.
rg 'public void update' -A 10 src/main/java/com/gdschongik/gdsc/domain/study/domain/StudyAnnouncement.java

Length of output: 222


53-65: createStudyAnnouncement 메서드에 유효성 검사가 필요합니다.

현재 createStudyAnnouncement 메서드는 입력값에 대한 유효성 검사를 수행하지 않고 StudyAnnouncement 객체를 생성합니다. 입력값의 유효성을 확인하는 로직을 추가하는 것이 좋습니다. 예를 들어, titlelink가 null이 아니고 비어 있지 않은지 확인하는 검사를 추가할 수 있습니다.

  • 파일: src/main/java/com/gdschongik/gdsc/domain/study/domain/StudyAnnouncement.java
Analysis chain

코드 변경 사항이 적절합니다.

스터디 공지 생성 메서드는 멘토 권한을 확인하고 로그를 남기는 등 올바르게 동작합니다.

다만, StudyAnnouncement.createStudyAnnouncement 메서드가 필요한 모든 유효성 검사를 수행하는지 확인하세요.

Scripts executed

The following scripts were executed for the analysis:

Script:

#!/bin/bash
# Description: Verify the implementation of `createStudyAnnouncement` method in `StudyAnnouncement` class.

# Test: Search for the method implementation. Expect: Proper validation logic.
ast-grep --lang java --pattern $'class StudyAnnouncement {
  $$$
  public static StudyAnnouncement createStudyAnnouncement($_, $_, $_) {
    $$$
  }
  $$$
}'

Length of output: 158


Script:

#!/bin/bash
# Description: Search for the `StudyAnnouncement` class and list its methods.

# Step 1: Find the `StudyAnnouncement` class.
ast-grep --lang java --pattern 'class StudyAnnouncement { $$$ }'

# Step 2: Search for all method declarations within `StudyAnnouncement`.
ast-grep --lang java --pattern 'class StudyAnnouncement { $$$ public $_ $_($_) { $$$ } $$$ }'

Length of output: 162


Script:

#!/bin/bash
# Description: Locate the `StudyAnnouncement` class file in the codebase.

# Use `fd` to search for files containing `StudyAnnouncement` class definition.
rg --files-with-matches --fixed-strings 'class StudyAnnouncement' --glob '*.java'

Length of output: 160


Script:

#!/bin/bash
# Description: Verify the implementation of `createStudyAnnouncement` method in `StudyAnnouncement.java`.

# Search for the `createStudyAnnouncement` method within the `StudyAnnouncement.java` file.
rg 'public static StudyAnnouncement createStudyAnnouncement' -A 10 src/main/java/com/gdschongik/gdsc/domain/study/domain/StudyAnnouncement.java

Length of output: 457

Review details

Configuration used: CodeRabbit UI
Review profile: CHILL

Commits

Files that changed from the base of the PR and between 50375a4 and b74d6f8.

Files selected for processing (9)
  • src/main/java/com/gdschongik/gdsc/domain/study/api/MentorStudyController.java (2 hunks)
  • src/main/java/com/gdschongik/gdsc/domain/study/api/StudentStudyController.java (2 hunks)
  • src/main/java/com/gdschongik/gdsc/domain/study/application/MentorStudyService.java (2 hunks)
  • src/main/java/com/gdschongik/gdsc/domain/study/application/StudentStudyService.java (2 hunks)
  • src/main/java/com/gdschongik/gdsc/domain/study/dao/StudyAnnouncementRepository.java (1 hunks)
  • src/main/java/com/gdschongik/gdsc/domain/study/domain/StudyAnnouncement.java (2 hunks)
  • src/main/java/com/gdschongik/gdsc/domain/study/dto/request/StudyAnnouncementCreateUpdateRequest.java (1 hunks)
  • src/main/java/com/gdschongik/gdsc/domain/study/dto/request/StudyAttendCreateRequest.java (1 hunks)
  • src/main/java/com/gdschongik/gdsc/global/exception/ErrorCode.java (1 hunks)
Files skipped from review due to trivial changes (1)
  • src/main/java/com/gdschongik/gdsc/domain/study/dto/request/StudyAttendCreateRequest.java
Files skipped from review as they are similar to previous changes (1)
  • src/main/java/com/gdschongik/gdsc/global/exception/ErrorCode.java
Additional comments not posted (8)
src/main/java/com/gdschongik/gdsc/domain/study/dto/request/StudyAnnouncementCreateUpdateRequest.java (1)

6-8: 코드가 적절합니다.

title 필드에 대한 @NotBlank 유효성 검사가 적절하게 사용되었습니다. link 필드에 대한 추가적인 유효성 검사가 필요한지 검토해 보세요.

src/main/java/com/gdschongik/gdsc/domain/study/dao/StudyAnnouncementRepository.java (1)

9-13: 코드가 적절합니다.

getById 메서드는 엔티티를 편리하게 조회할 수 있도록 구현되었습니다. CustomException이 애플리케이션에서 적절히 처리되는지 확인하세요.

src/main/java/com/gdschongik/gdsc/domain/study/domain/StudyAnnouncement.java (1)

Line range hint 20-50: 코드가 적절합니다.

StudyAnnouncement 클래스는 빌더 패턴과 정적 팩토리 메서드를 사용하여 객체 생성의 명확성을 높였습니다. update 메서드를 통해 엔티티의 필드를 쉽게 수정할 수 있습니다. 애플리케이션에서 update 메서드가 적절히 사용되는지 확인하세요.

src/main/java/com/gdschongik/gdsc/domain/study/api/StudentStudyController.java (1)

4-4: DTO 변경 확인 필요

StudyAttendRequest에서 StudyAttendCreateRequest로 변경되었습니다. 이 변경 사항이 시스템 전반에 걸쳐 일관되게 반영되었는지 확인이 필요합니다. 특히, 이 DTO를 사용하는 다른 부분에서의 호환성을 검토해야 합니다.

Also applies to: 52-54

Verification successful

DTO 변경이 일관되게 적용되었습니다

StudyAttendCreateRequestStudentStudyServiceStudentStudyController에서 사용되고 있으며, StudyAttendRequest의 잔여 사용 흔적이 없습니다. 이로 인해 변경 사항이 시스템 전반에 걸쳐 일관되게 반영된 것으로 보입니다.

Scripts executed

The following scripts were executed for the analysis:

Script:

#!/bin/bash
# Description: Verify all references to `StudyAttendCreateRequest` in the codebase.

# Test: Search for the usage of `StudyAttendCreateRequest`. Expect: Consistent usage across the codebase.
rg --type java 'StudyAttendCreateRequest'

Length of output: 833

src/main/java/com/gdschongik/gdsc/domain/study/api/MentorStudyController.java (2)

4-4: 스터디 공지 생성 API 추가

스터디 공지 생성 기능이 추가되었습니다. StudyAnnouncementCreateUpdateRequest DTO의 유효성 검사가 필요하며, 서비스 계층에서의 처리 로직이 적절한지 확인해야 합니다.

Also applies to: 45-50


53-58: 스터디 공지 수정 API 추가

스터디 공지 수정 기능이 추가되었습니다. 수정 시 전체 리소스를 업데이트하는 것이므로 PUT 메서드 사용이 적절합니다. DTO 네이밍 컨벤션을 준수했는지 확인하세요.

src/main/java/com/gdschongik/gdsc/domain/study/application/StudentStudyService.java (1)

13-13: DTO 변경에 따른 서비스 로직 확인 필요

attend 메서드가 StudyAttendCreateRequest를 사용하도록 변경되었습니다. 이 변경이 서비스 로직에 미치는 영향을 검토하고, 다른 관련 메서드와의 호환성을 확인해야 합니다.

Also applies to: 76-78

Verification successful

서비스 로직 호환성 확인 완료

attend 메서드가 StudyAttendCreateRequest를 사용하는 변경 사항이 StudentStudyController에서 적절히 반영되었습니다. 코드베이스 내 다른 관련 메서드와의 호환성 문제는 발견되지 않았습니다.

Scripts executed

The following scripts were executed for the analysis:

Script:

#!/bin/bash
# Description: Verify all references to `attend` method in the codebase to ensure compatibility.

# Test: Search for the usage of `attend` method. Expect: Consistent usage with the new DTO.
rg --type java 'attend\(.*StudyAttendCreateRequest'

Length of output: 216


Script:

#!/bin/bash
# Search for all calls to the `attend` method in the codebase to verify compatibility with the new DTO.
rg --type java 'attend\(' -A 2

Length of output: 1116

src/main/java/com/gdschongik/gdsc/domain/study/application/MentorStudyService.java (1)

81-92: 코드 변경 사항이 적절합니다.

스터디 공지 삭제 메서드는 멘토 권한을 확인하고 로그를 남기는 등 올바르게 동작합니다.

다만, studyAnnouncementRepository.delete 메서드가 예외를 적절히 처리하는지 확인하세요.

Verification successful

delete 메서드의 예외 처리 확인

StudyAnnouncementRepositoryJpaRepository를 상속받는 인터페이스입니다. JpaRepository는 Spring Data JPA의 일부로, 예외 처리를 내부적으로 처리하여 일관된 예외 변환을 제공합니다. 따라서 delete 메서드는 이미 적절한 예외 처리를 수행하고 있을 가능성이 높습니다. 추가적인 코드 변경은 필요하지 않습니다.

Scripts executed

The following scripts were executed for the analysis:

Script:

#!/bin/bash
# Description: Verify the delete method handling in `StudyAnnouncementRepository`.

# Test: Search for the delete method usage. Expect: Proper exception handling.
rg --type java -A 3 $'studyAnnouncementRepository.delete'

Length of output: 564


Script:

#!/bin/bash
# Locate the implementation of the delete method in StudyAnnouncementRepository to verify exception handling.
ast-grep --lang java --pattern $'class StudyAnnouncementRepository {
  $$$
  void delete(StudyAnnouncement $_) {
    $$$
  }
  $$$
}'

Length of output: 134


Script:

#!/bin/bash
# Locate the definition of StudyAnnouncementRepository to understand its structure and any inherited methods.
rg --type java 'class StudyAnnouncementRepository' -A 10
rg --type java 'interface StudyAnnouncementRepository' -A 10

Length of output: 875

Copy link
Member

@uwoobeat uwoobeat left a comment

Choose a reason for hiding this comment

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

lgtm

@seulgi99 seulgi99 merged commit e242f91 into develop Aug 18, 2024
1 check passed
@seulgi99 seulgi99 deleted the feature/580-notification-create-update-delete branch August 18, 2024 06:18
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
✨ feature 새로운 기능 추가 및 수정
Projects
None yet
Development

Successfully merging this pull request may close these issues.

✨ 스터디 공지 추가, 수정, 삭제 API 구현
3 participants