-
Notifications
You must be signed in to change notification settings - Fork 0
[FIX] 게시글 작성 및 메인페이지 수정, 도메인 변수명 수정 #21
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
Conversation
|
Important Review skippedAuto reviews are disabled on base/target branches other than the default branch. Please check the settings in the CodeRabbit UI or the You can disable this status message by setting the Walkthrough이 변경 사항은 도메인 엔티티의 필드명, 관계, 패키지 구조를 대대적으로 리팩토링하고, 북마크 폴더, 태그, 포스트 태그 등 새로운 저장소 및 초기화 로직을 추가합니다. 또한 멤버 관련 API와 서비스가 통합·이동되었으며, 보안 설정이 비활성화되고, JPA 스키마 전략이 create-drop으로 변경되었습니다. Changes
Sequence Diagram(s)sequenceDiagram
actor User
participant MemberController
participant MemberService
participant MemberRepository
participant BookmarkFolderRepository
User->>MemberController: POST /api/members/signup
MemberController->>MemberService: signup(request)
MemberService->>MemberRepository: existsByEmail / existsByNickname
alt 중복 존재
MemberService-->>MemberController: Exception 발생
else 중복 없음
MemberService->>MemberRepository: save(new Member)
MemberService->>BookmarkFolderRepository: save(new BookmarkFolder)
MemberService-->>MemberController: 회원가입 성공
end
MemberController-->>User: 회원가입 결과 반환
sequenceDiagram
actor User
participant PostService
participant TagRepository
participant PostTagRepository
participant BookmarkFolderRepository
participant BookmarkRepository
User->>PostService: createPost(PostRequestDto)
PostService->>TagRepository: findAllById(tags)
PostService->>PostTagRepository: save(PostTag)
PostService->>BookmarkFolderRepository: findByUserId
Note over PostService: 커버 이미지, 태그, 북마크 폴더 연동 후 게시글 저장
Possibly related PRs
Poem
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. 🪧 TipsChatThere are 3 ways to chat with CodeRabbit:
SupportNeed help? Create a ticket on our support page for assistance with any issues or questions. 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 using PR comments)
Other keywords and placeholders
Documentation and Community
|
|
@coderabbitai review |
✅ Actions performedReview triggered.
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Actionable comments posted: 27
🔭 Outside diff range comments (4)
src/main/java/com/example/fixlog/config/SecurityConfig.java (1)
1-32: 🛠️ Refactor suggestion
⚠️ Potential issue보안 설정이 비활성화되어 있습니다. 주의가 필요합니다.
전체 보안 설정이 주석 처리되어 있어 모든 엔드포인트가 인증 없이 접근 가능합니다. PR 설명에 따르면 로그인 기능 구현 후 주석 해제 예정이라고 하지만, 이를 명확히 표시해야 합니다.
파일 상단에 TODO 주석을 추가하여 의도를 명확히 하세요:
+// TODO: 로그인 기능 구현 완료 후 주석 해제 필요 //package com.example.fixlog.config;또한 이슈 트래커에 이 작업을 추적할 수 있는 티켓을 생성하는 것을 권장합니다.
src/main/java/com/example/FixLog/service/MemberService.java (1)
1-57: 💡 Verification agent🧩 Analysis chain
전체 파일이 주석 처리되어 있고 패키지명이 일관되지 않습니다.
- 패키지명이
com.example.fixlog가 아닌com.example.FixLog로 되어 있어 다른 파일들과 일관성이 없습니다.- 전체 코드가 주석 처리되어 있는데, 이는 코드베이스를 혼란스럽게 만들 수 있습니다.
다음 스크립트로 패키지명 일관성을 확인하세요:
만약 이 서비스가 더 이상 필요하지 않다면 파일을 삭제하는 것이 좋습니다. 임시로 유지해야 한다면 명확한 TODO 주석을 추가하세요.
🏁 Script executed:
#!/bin/bash # 패키지명 패턴 확인 echo "=== FixLog (대문자) 패키지 사용 파일 ===" fd -e java | xargs grep -l "package com.example.FixLog" echo -e "\n=== fixlog (소문자) 패키지 사용 파일 ===" fd -e java | xargs grep -l "package com.example.fixlog"Length of output: 3136
디렉터리명과 주석 처리된 코드 정리 필요
패키지 선언은 모두
com.example.fixlog(소문자)로 일관되어 있으나, 실제 디렉터리 구조가com/example/FixLog(대문자)로 되어 있어 패키지 경로와 불일치합니다. 또한MemberService.java전체가 주석 처리되어 있어 혼란을 초래합니다.수정 사항:
- src/main/java/com/example/FixLog/** → src/main/java/com/example/fixlog/**
(파일 이동 및 디렉터리명 소문자화)- MemberService.java 파일
- 불필요하다면 삭제
- 당장 유지해야 한다면 명확한 TODO 주석(혹은 Javadoc) 추가 후 코드 활성화 여부를 설명
src/main/java/com/example/fixlog/service/PostService.java (1)
117-139: 💡 Verification agent🧩 Analysis chain
북마크 폴더 로직이 제한적입니다.
현재 구현은 사용자당 하나의 북마크 폴더만 지원합니다. 향후 여러 폴더를 지원하려면 리팩토링이 필요합니다.
다음 사항들을 고려하세요:
- 125번 라인의 주석대로 현재는 폴더가 하나일 때만 작동합니다
- 향후 여러 폴더 지원 시 폴더 선택 로직이 필요합니다
- 138번 라인의 FIXME에 대해서는 비즈니스 요구사항 확인이 필요합니다
🌐 Web query:
일반적으로 소셜 미디어나 블로그 플랫폼에서 자신의 글을 북마크하는 것을 허용하나요?💡 Result:
소셜 미디어 및 블로그 플랫폼에서 자신의 글 북마크 허용 여부
사용자가 자신이 쓴 글을 북마크(저장)하는 행위는 대부분의 주요 소셜 미디어 및 블로그 플랫폼에서 허용되어 있습니다.
블로그 플랫폼(네이버 블로그, 티스토리 등)
- 네이버 블로그에서는 자신이 쓴 글을 포함해 관심 있는 글을 북마크(즐겨찾기) 기능으로 저장할 수 있습니다. 사용자는 포스트 하단의 ‘북마크’(별표) 아이콘을 클릭해 자신이 쓴 글도 자유롭게 북마크에 추가할 수 있으며, 이는 로그인한 자신의 계정 내 북마크함에서 언제든지 확인 가능합니다[1][2][3].
- 이용 목적은 본인 글의 빠른 접근, 여러 개의 글 중 특정 글을 집중 관리, 필요시 다시 읽기 등 다양합니다. 타인이 쓴 글뿐 아니라 자신의 글도 북마크하는 것에 제약이 따르지 않습니다[3].
소셜 미디어 플랫폼(페이스북 등)
- 페이스북 등 주요 소셜미디어는 ‘저장’ 또는 ‘북마크’ 기능(예: Save to Facebook)을 제공하며, 본인이 올린 게시물도 저장 목록에 추가할 수 있습니다. 이는 본인 글 관리나 나중에 내용을 다시 참고하고 싶을 때 자주 활용되는 방식입니다[4].
- 북마크/저장 기능은 본인이 쓴 글이든, 타인이 쓴 글이든 사용자 계정 내에서만 활용되므로, 플랫폼 정책상 제약이 따로 없습니다.
브라우저, 기타 플랫폼
- 일반 브라우저의 ‘북마크’ 기능이나 피큐레잇(Picureit) 등의 서드파티 북마크 서비스도 본인이 운영하는 블로그나 소셜 계정의 게시물을 자유롭게 북마크할 수 있습니다[6]. 이 기능은 해당 플랫폼의 별도 제한 없이 가능합니다.
결론
대부분의 소셜 미디어 및 블로그 플랫폼에서는 사용자가 자신의 글을 북마크하는 것을 명시적으로 허용하며, 특별한 제한이나 금지 규정이 존재하지 않습니다. 이는 개인의 콘텐츠 관리와 접근성을 높이기 위한 일반적이고 보편적인 서비스 기능입니다[1][2][3][4][6].
Citations:
- 1: https://blog.naver.com/ssagssl/70137409695?fromRss=true&trackingCode=rss
- 2: https://blog.naver.com/mchan21/60159671752
- 3: https://ldh9470.tistory.com/224
- 4: https://dailygrim.tistory.com/112
- 5: https://www.yna.co.kr/view/AKR20241115043500002
- 6: https://blog.naver.com/11ansgallry/222500957969
- 7: https://blog.naver.com/artmediaculture/223437058631
- 8: https://www.careet.net/447
- 9: https://the-see.tistory.com/111
- 10: https://www.poptin.com/blog/ko/website-owners-not-neglect-content-marketing/
한 개 폴더만 지원하는 북마크 로직 및 본인 글 북마크 허용 개선 제안
현재
toggleBookmark메서드는 사용자당 단일 폴더만 지원하며, 본인 글 북마크 여부가 미정의 상태입니다. 아래 사항을 검토해주세요:
bookmarkFolderRepository.findByUserId(userId)호출은 오직 하나의 폴더만 반환합니다.
→ 향후 다중 폴더 지원 시, 폴더 선택(UI/API 파라미터/디폴트 폴더 지정 등) 로직을 추가해야 합니다.- 125번 라인의 주석(
// 이 코드는 폴더가 하나일 때만 적용됨)을 남기거나, 단일 폴더 제약에 대해 명시적인 예외를 던지는 방향으로 처리하세요.- 138번 라인의 FIXME(
// Fixme : 본인 글은 북마크 못하려나?)는 제거하고, 본인 게시물도 북마크할 수 있도록 허용하도록 수정해주세요.
– 웹 조사를 통해 대부분의 소셜/블로그 플랫폼은 본인 글 북마크를 허용하는 것으로 확인되었습니다. 별도 비즈니스 제약이 없다면, 본인 글도 일반 글과 동일한 흐름으로 처리하는 것이 사용자 경험상 자연스럽습니다.src/main/java/com/example/FixLog/controller/MemberController.java (1)
1-39: 🛠️ Refactor suggestion전체 파일을 주석 처리하는 것보다 더 나은 방법을 고려해보세요.
전체 컨트롤러를 주석 처리하는 것은 좋은 방법이 아닙니다. 대신 다음과 같은 방법을 고려해보세요:
@Profile또는@ConditionalOnProperty를 사용하여 조건부로 빈을 로드- 별도의 feature branch에서 개발
- 필요한 부분만 주석 처리
예시:
@RestController @RequestMapping("/api/members") @RequiredArgsConstructor @ConditionalOnProperty(name = "feature.member.enabled", havingValue = "true") public class MemberController { // ... 코드 내용 }그리고
application.yml에서:feature: member: enabled: false # 로그인 기능 완성 후 true로 변경
🧹 Nitpick comments (8)
build.gradle (1)
28-28: 임시 보안 비활성화에 대한 추적 개선 제안PR 목적에 따라 로그인 기능 완료까지 임시로 Spring Security를 비활성화한 것으로 이해됩니다. 하지만 build.gradle에서 의존성을 주석 처리하면 나중에 재활성화할 때 놓칠 수 있습니다.
다음과 같은 방법을 고려해보세요:
- // implementation 'org.springframework.boot:spring-boot-starter-security' + implementation 'org.springframework.boot:spring-boot-starter-security' // TODO: 로그인 기능 완료 후 SecurityConfig와 함께 활성화또는 이슈를 생성하여 추적하는 것을 권장합니다.
src/main/resources/application.properties (1)
14-14: 스키마 재생성 전략 변경에 대한 주의사항도메인 모델 대대적 리팩토링에 맞춰
create-drop전략으로 변경한 것이 적절합니다. 하지만 이 설정의 의미와 주의사항을 명확히 해야 합니다.다음과 같이 주석을 추가하여 의도를 명확히 하는 것을 권장합니다:
spring.jpa.show-sql=true -spring.jpa.hibernate.ddl-auto=create-drop +# 도메인 리팩토링 기간 중 개발용 설정 - 애플리케이션 재시작 시 데이터 초기화됨 +# TODO: 개발 완료 후 update 또는 validate로 변경 필요 +spring.jpa.hibernate.ddl-auto=create-drop그리고 프로덕션 환경에서는 반드시 다른 값으로 설정되도록 프로파일별 설정을 고려해보세요.
src/main/java/com/example/fixlog/dto/post/PostRequestDto.java (1)
23-24: 주석 처리된 코드 정리를 고려해주세요.주석 처리된 코드가 더 이상 필요하지 않다면 제거하는 것을 고려해보세요. 임시적으로 유지해야 한다면 TODO 주석을 추가하여 목적을 명확히 해주세요.
-// private List<String> postImageUrl; -// private List<String> tags; + // TODO: 이미지 업로드 기능 구현 후 제거 예정 +// private List<String> postImageUrl; +// private List<String> tags;src/main/java/com/example/fixlog/service/PostService.java (1)
58-59: 태그 개수 제한을 구현해야 합니다.TODO 주석에 따르면 태그 선택 제한이 필요합니다. PR 설명에서도 언급된 사항입니다.
다음과 같이 태그 개수 제한을 추가할 수 있습니다:
// 태그 저장 List<Long> tagIds = postRequestDto.getTags(); if (tagIds.size() > 5) { // 예: 최대 5개 제한 throw new CustomException(ErrorCode.TAG_LIMIT_EXCEEDED); }이 기능 구현을 위한 이슈를 생성할까요?
Also applies to: 77-85
src/main/java/com/example/fixlog/domain/like/PostLike.java (1)
36-38: 메서드명이 Java 명명 규칙을 따르지 않습니다Java 메서드는 camelCase를 사용해야 합니다. 첫 글자는 소문자로 시작해야 합니다.
- public void ToggleLike(boolean state){ + public void toggleLike(boolean state){ this.isLiked = state; }src/main/java/com/example/fixlog/domain/bookmark/Bookmark.java (1)
17-18: 필드명과 타입 불일치 문제
bookmarkId필드명은 Long 타입의 ID를 나타내지만, 실제로는 primary key입니다. 일관성을 위해id또는 다른 명확한 이름 사용을 고려해보세요.src/main/java/com/example/fixlog/domain/post/Post.java (2)
21-22: 필드명과 타입 불일치 문제
postId필드명은 Long 타입의 ID를 나타내지만, 실제로는 primary key입니다. 일관성을 위해id사용을 고려해보세요.
61-61: @lob 필드의 일관성 부족
extraContent필드에서@Column(columnDefinition = "TEXT")어노테이션이 제거되었지만, 다른@Lob필드들과의 일관성을 위해 다시 추가하는 것을 고려해보세요.@Lob + @Column(columnDefinition = "TEXT") private String extraContent;
📜 Review details
Configuration used: .coderabbit.yaml
Review profile: CHILL
Plan: Pro
📒 Files selected for processing (32)
build.gradle(1 hunks)src/main/java/com/example/FixLog/controller/FollowController.java(1 hunks)src/main/java/com/example/FixLog/controller/MemberController.java(1 hunks)src/main/java/com/example/FixLog/controller/PostController.java(1 hunks)src/main/java/com/example/FixLog/domain/bookmark/BookmarkFolder.java(1 hunks)src/main/java/com/example/FixLog/mock/TagTestDataInitializer.java(1 hunks)src/main/java/com/example/FixLog/repository/bookmark/BookmarkFolderRepository.java(1 hunks)src/main/java/com/example/FixLog/repository/post/PostTagRepository.java(1 hunks)src/main/java/com/example/FixLog/repository/tag/TagRepository.java(1 hunks)src/main/java/com/example/FixLog/service/FollowService.java(4 hunks)src/main/java/com/example/FixLog/service/MemberService.java(1 hunks)src/main/java/com/example/fixlog/config/SecurityConfig.java(1 hunks)src/main/java/com/example/fixlog/controller/member/MemberController.java(0 hunks)src/main/java/com/example/fixlog/domain/bookmark/Bookmark.java(1 hunks)src/main/java/com/example/fixlog/domain/follow/Follow.java(1 hunks)src/main/java/com/example/fixlog/domain/fork/Fork.java(1 hunks)src/main/java/com/example/fixlog/domain/like/PostLike.java(1 hunks)src/main/java/com/example/fixlog/domain/member/Member.java(2 hunks)src/main/java/com/example/fixlog/domain/post/Post.java(2 hunks)src/main/java/com/example/fixlog/domain/post/PostImage.java(0 hunks)src/main/java/com/example/fixlog/domain/post/PostTag.java(1 hunks)src/main/java/com/example/fixlog/domain/tag/Tag.java(2 hunks)src/main/java/com/example/fixlog/domain/tag/TagCategory.java(1 hunks)src/main/java/com/example/fixlog/dto/post/PostRequestDto.java(2 hunks)src/main/java/com/example/fixlog/exception/ErrorCode.java(1 hunks)src/main/java/com/example/fixlog/mock/MemberTestDataInitializer.java(2 hunks)src/main/java/com/example/fixlog/repository/bookmark/BookmarkRepository.java(1 hunks)src/main/java/com/example/fixlog/repository/follow/FollowRepository.java(1 hunks)src/main/java/com/example/fixlog/repository/like/PostLikeRepository.java(1 hunks)src/main/java/com/example/fixlog/service/PostService.java(5 hunks)src/main/java/com/example/fixlog/service/member/MemberService.java(0 hunks)src/main/resources/application.properties(1 hunks)
💤 Files with no reviewable changes (3)
- src/main/java/com/example/fixlog/domain/post/PostImage.java
- src/main/java/com/example/fixlog/service/member/MemberService.java
- src/main/java/com/example/fixlog/controller/member/MemberController.java
🧰 Additional context used
🧬 Code Graph Analysis (1)
src/main/java/com/example/FixLog/mock/TagTestDataInitializer.java (1)
src/main/java/com/example/fixlog/mock/MemberTestDataInitializer.java (1)
Component(14-35)
🔇 Additional comments (19)
src/main/java/com/example/FixLog/controller/PostController.java (1)
1-1:Details
✅ Verification successful
패키지 구조 단순화 승인
컨트롤러 폴더 구조 단순화에 따른 패키지 변경이 올바르게 적용되었습니다.
다른 컨트롤러들과의 일관성을 확인하기 위해 다음 스크립트를 실행해보세요:
🏁 Script executed:
#!/bin/bash # 모든 컨트롤러의 패키지 선언 확인 echo "=== Controller 패키지 선언 확인 ===" find src/main/java -name "*Controller.java" -exec grep -H "^package" {} \; echo -e "\n=== 이전 subpackage 구조 잔재 확인 ===" rg "com\.example\.fixlog\.controller\.(post|follow|member)" --type javaLength of output: 505
패키지 구조 단순화 검증 완료
- FollowController.java, PostController.java 모두
package com.example.fixlog.controller;를 선언하고 있습니다.com.example.fixlog.controller.post|follow|member하위 패키지 관련 코드가 더 이상 존재하지 않습니다.이제 변경된 패키지 구조가 일관되게 적용되었으므로 승인합니다.
src/main/java/com/example/FixLog/controller/FollowController.java (1)
1-1: 패키지 구조 리팩토링 일관성 확인됨PostController와 일관되게 패키지 구조가 단순화되었고, 관련 import 문도 올바르게 업데이트되었습니다.
Also applies to: 9-9
src/main/java/com/example/FixLog/repository/post/PostTagRepository.java (1)
1-7: LGTM! 표준 JPA 레포지토리 구현이 올바릅니다.PostTag 엔티티에 대한 기본적인 CRUD 작업을 위한 표준 Spring Data JPA 레포지토리 인터페이스가 올바르게 구현되었습니다.
src/main/java/com/example/FixLog/repository/tag/TagRepository.java (1)
1-7: LGTM! 태그 관리를 위한 표준 레포지토리 구현입니다.Tag 엔티티를 위한 기본 JPA 레포지토리가 Spring Data JPA 규칙에 따라 올바르게 구현되었습니다.
src/main/java/com/example/fixlog/dto/post/PostRequestDto.java (2)
5-5: 새로운 import 추가가 적절합니다.태그 목록을 위한
java.util.Listimport가 올바르게 추가되었습니다.
11-11: 새로운 필드 추가가 기능 요구사항과 일치합니다.커버 이미지와 태그 기능을 위한
coverImageUrl과tags필드가 올바르게 추가되었습니다. PR 목표와 일치하는 변경사항입니다.Also applies to: 21-21
src/main/java/com/example/fixlog/mock/MemberTestDataInitializer.java (3)
3-5: LGTM! 필요한 import 추가BookmarkFolder와 BookmarkFolderRepository import가 적절히 추가되었습니다.
19-19: LGTM! BookmarkFolderRepository 의존성 주입BookmarkFolderRepository 의존성이 적절히 추가되었습니다.
27-31: LGTM! 멤버별 기본 북마크 폴더 생성 로직각 멤버에 대해 BookmarkFolder를 생성하여 저장하는 로직이 잘 구현되었습니다. 이는 도메인 모델의 일관성을 유지하는 좋은 방법입니다.
src/main/java/com/example/FixLog/mock/TagTestDataInitializer.java (1)
12-16: LGTM! 표준 테스트 데이터 초기화 패턴 사용Spring의 CommandLineRunner를 사용한 테스트 데이터 초기화 패턴이 프로젝트의 다른 초기화 클래스들과 일관성 있게 구현되었습니다.
src/main/java/com/example/fixlog/repository/bookmark/BookmarkRepository.java (1)
4-4: LGTM! import 변경Member에서 BookmarkFolder로 import가 적절히 변경되었습니다.
src/main/java/com/example/fixlog/domain/tag/Tag.java (2)
17-18: 필드명 변경이 적절합니다.도메인 전체의 일관성을 위한 네이밍 컨벤션 변경이 잘 적용되었습니다.
Also applies to: 24-24
26-31: 정적 팩토리 메서드 추가가 좋습니다.간단하고 명확한 객체 생성 방법을 제공합니다.
src/main/java/com/example/fixlog/service/PostService.java (1)
95-114: 리포지토리 메서드명 변경이 적절합니다.도메인 모델 변경에 맞춰 메서드명이 일관되게 변경되었습니다.
src/main/java/com/example/fixlog/domain/member/Member.java (1)
59-59:Details
✅ Verification successful
Post 엔티티의 실제 필드명 확인 필요
mappedBy = "userId"는 Post 엔티티에 있는 Member 참조 필드명과 일치해야 합니다. Post 엔티티에서 Member를 참조하는 필드명이 정확히userId인지 확인해주세요.
🏁 Script executed:
#!/bin/bash # Post 엔티티에서 Member를 참조하는 필드 확인 ast-grep --pattern 'class Post { $$$ private Member $FIELD; $$$ }'Length of output: 74
Post 엔티티의 Member 참조 필드를 정확히 찾아야 합니다.
Post.java파일 경로를 탐색한 뒤, Member 타입 필드를 확인해보겠습니다.
🏁 Script executed:
#!/bin/bash # 1. Post.java 파일 경로 찾기 file=$(fd 'Post.java' src/main/java) echo "Post.java 경로: $file" # 2. Post.java에서 Member 참조 필드와 매핑 어노테이션 확인 grep -nE "@ManyToOne|Member" "$file"Length of output: 554
매핑 확인 완료:
mappedBy = "userId"가 Post 엔티티의userId필드와 일치합니다. 변경이 필요 없습니다.src/main/java/com/example/FixLog/domain/bookmark/BookmarkFolder.java (1)
25-25: 관계 변경이 비즈니스 요구사항과 일치하는지 확인해주세요.
@ManyToOne에서@OneToOne으로 변경되어 이제 각 사용자는 하나의 북마크 폴더만 가질 수 있습니다. 이것이 의도된 변경인지 확인이 필요합니다.만약 사용자가 여러 북마크 폴더를 가질 수 있어야 한다면,
@ManyToOne관계를 유지해야 합니다.src/main/java/com/example/fixlog/domain/post/Post.java (3)
31-32: 새로운 coverImage 필드 추가coverImage 필드가 추가되어 포스트에 대표 이미지 기능이 구현되었습니다. TEXT 컬럼 정의가 적절합니다.
70-70:Details
✅ Verification successful
관계 매핑 업데이트 확인 필요
mappedBy = "postId"로 변경되었지만, Bookmark 엔티티의 필드명이 실제로postId인지 확인이 필요합니다.다음 스크립트로 Bookmark 엔티티의 필드명을 확인해보세요:
🏁 Script executed:
#!/bin/bash # Description: Bookmark 엔티티의 Post 참조 필드명 확인 ast-grep --pattern 'class Bookmark { $$$ private Post $FIELD; $$$ }'Length of output: 76
아래 스크립트로 Bookmark 엔티티 파일을 찾고,
Post참조 필드명을 다시 확인해보겠습니다:
🏁 Script executed:
#!/bin/bash # Bookmark 엔티티 파일 위치 출력 echo "🔍 Bookmark.java 파일 찾는 중..." fd -e java Bookmark.java # Bookmark.java 내 Post 타입 필드 확인 echo "🔍 Bookmark.java 내 Post 타입 필드 검색 중..." fd -e java Bookmark.java --exec rg -n "private Post" {}Length of output: 327
관계 매핑 확인 완료
- Bookmark 엔티티(src/main/java/com/example/fixlog/domain/bookmark/Bookmark.java:22)의
private Post postId;필드가 확인되어mappedBy = "postId"설정이 올바릅니다.
73-74:Details
✅ Verification successful
PostTag 관계 매핑
새로운
PostTag엔티티와의 관계가 추가되었습니다.mappedBy = "postId"가 올바른지 확인이 필요합니다.PostTag 엔티티의 Post 참조 필드명을 확인해보세요:
🏁 Script executed:
#!/bin/bash # Description: PostTag 엔티티의 Post 참조 필드명 확인 ast-grep --pattern 'class PostTag { $$$ private Post $FIELD; $$$ }'Length of output: 75
PostTag 엔티티의 클래스 정의와 Post 참조 필드를 직접 확인하기 위해 아래 스크립트를 실행해주세요:
🏁 Script executed:
#!/bin/bash # PostTag.java 파일 위치 찾기 file=$(rg -l "class PostTag" -n src | head -n1) echo "File: $file" echo "=== 클래스 선언부 ===" sed -n '1,50p' "$file" echo "=== Post 참조 필드 ===" rg "private Post" -n "$file"Length of output: 1287
검증 완료:
mappedBy="postId"가 올바릅니다
PostTag 엔티티 내에 Post를 참조하는 필드명이private Post postId;이므로,mappedBy = "postId"설정이 정확합니다.
src/main/java/com/example/FixLog/repository/bookmark/BookmarkFolderRepository.java
Show resolved
Hide resolved
src/main/java/com/example/FixLog/mock/TagTestDataInitializer.java
Outdated
Show resolved
Hide resolved
src/main/java/com/example/fixlog/repository/bookmark/BookmarkRepository.java
Show resolved
Hide resolved
sungchaewon
left a comment
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
확인했습니다! 고생하셨습니다~
|
확인했습니다! 수고하셨습니다~ |
이슈 번호
작업 내용
--
--
기타
Summary by CodeRabbit
신규 기능
버그 수정
리팩터링
기타