Skip to content

feature: 팔로우/팔로잉 관계 구현 - #49

Merged
gummy000 merged 1 commit into
mainfrom
feature/follow-following
May 6, 2026
Merged

feature: 팔로우/팔로잉 관계 구현#49
gummy000 merged 1 commit into
mainfrom
feature/follow-following

Conversation

@gummy000

@gummy000 gummy000 commented May 6, 2026

Copy link
Copy Markdown
Member

📌 작업 내용

인스타그램 스타일의 팔로우/팔로잉 관계 시스템을 구현했습니다.

✅ 구현 사항

1. 계정 고유 아이디 (username)

  • users 테이블에 username 컬럼 추가 (영문·숫자·언더스코어, 3~30자, 중복 불가)
  • 프로필 설정/수정 API(POST·PATCH /users/me)에 username 파라미터 추가
  • 중복·형식 오류 시 400 응답

2. 팔로우 신청 / 수락 / 거절 플로우

  • follows 테이블 신규 생성 (PENDINGACCEPTED 상태 전환)
  • POST /api/v1/follows/{targetUserId} — 팔로우 신청
  • DELETE /api/v1/follows/{targetUserId} — 신청 취소 / 언팔로우
  • PATCH /api/v1/follows/requests/{followId}/accept — 수락
  • DELETE /api/v1/follows/requests/{followId}/reject — 거절
  • GET /api/v1/follows/requests — 받은 팔로우 신청 목록

3. 팔로워 / 팔로잉 목록

  • GET /api/v1/follows/followers — 내 팔로워 목록
  • GET /api/v1/follows/followings — 내 팔로잉 목록
  • GET /api/v1/follows/{userId}/followers — 특정 유저 팔로워 목록
  • GET /api/v1/follows/{userId}/followings — 특정 유저 팔로잉 목록

4. 유저 검색

  • GET /api/v1/users/search?keyword=xxx — username·닉네임 동시 검색 (최대 20명)
  • 검색 결과에 나와의 팔로우 상태(null / PENDING / ACCEPTED) 포함

5. 다른 유저 공개 프로필 조회

  • GET /api/v1/users/{userId} — 팔로워·팔로잉 수 + 나와의 관계 + 본인 여부 포함

6. 피드 공개 범위 필터링 버그 수정

  • 기존: FOLLOWERS_ONLY 설정이 DB에만 저장되고 실제 필터링 없음
  • 수정: 피드 목록·상세 조회 시 팔로우 관계 기반 실제 필터링 적용
    • 비로그인: PUBLIC 피드만 노출
    • 로그인: PUBLIC + 내 피드 + 팔로우 중인 사람의 FOLLOWERS_ONLY 피드

📂 변경 파일

구분 파일
신규 domain/Follow.java, domain/FollowStatus.java
신규 repository/FollowRepository.java
신규 service/FollowService.java
신규 controller/FollowController.java
신규 dto/FollowUserDto, FollowRequestItemDto, UserSearchResponseDto, UserPublicProfileResponseDto
수정 domain/User.java — username 필드 추가
수정 repository/UserRepository.java, FeedRepository.java
수정 service/UserService.java, FeedService.java
수정 controller/UserController.java

🗄️ DB 변경사항

Hibernate ddl-auto=update로 배포 시 자동 반영됩니다.

  • users.username 컬럼 추가 (VARCHAR 30, UNIQUE)
  • follows 테이블 신규 생성

🤖 Generated with Claude Code

- User에 고유 username 필드 추가 (인스타그램 아이디, 영문/숫자/_, 3~30자, 중복 불가)
- Follow 엔티티 및 PENDING/ACCEPTED 상태 기반 팔로우 신청·수락·거절 플로우 구현
- 팔로우 신청/취소/언팔로우, 받은 신청 목록, 팔로워·팔로잉 목록 API 추가
- username·닉네임 기반 유저 검색 API 추가 (GET /users/search)
- 다른 유저 공개 프로필 조회 API 추가 (팔로워·팔로잉 수, 나와의 관계 포함)
- 피드 공개 범위(FOLLOWERS_ONLY) 실제 필터링 적용 (기존 버그 수정)

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
@gummy000
gummy000 merged commit 5deefbe into main May 6, 2026
1 check passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant