Skip to content

Commit

Permalink
✨ Feat: 멤버와 해당 멤버와의 친구 상태를 조회하는 메서드 구현
Browse files Browse the repository at this point in the history
<footer>
- 관련: #428
  • Loading branch information
joowojr committed Jan 12, 2025
1 parent 1eaf4d8 commit 9a66e47
Show file tree
Hide file tree
Showing 4 changed files with 27 additions and 2 deletions.
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
package com.namo.spring.db.mysql.domains.user.model.query;

import com.namo.spring.db.mysql.domains.user.entity.Member;
import com.namo.spring.db.mysql.domains.user.type.FriendshipStatus;

public record MemberWithFriendshipStatusQuery(
Member member,
FriendshipStatus friendshipStatus
) {
}
Original file line number Diff line number Diff line change
Expand Up @@ -32,7 +32,7 @@ public interface FriendshipRepository extends JpaRepository<Friendship, Long> {
* @param endDate
* @return 친구 memberId, nickname, birthday
*/
@Query("SELECT new com.namo.spring.db.mysql.domains.user.model.query.FriendBirthdayQuery(fr.id, fr.nickname, fr.birthday) " +
@Query("SELECT new com.namo.spring.db.mysql.domains.user.model.query.FriendshipWithBirthdayQuery(fr.id, fr.nickname, fr.birthday) " +
"FROM Friendship f JOIN f.friend fr " +
"WHERE f.member.id = :memberId " +
"AND fr.birthdayVisible = true " +
Expand All @@ -56,7 +56,7 @@ List<FriendshipWithBirthdayQuery> findBirthdayVisibleFriendIdsByPeriod(
* @param memberId
* @return 친구 memberId, nickname, birthday
*/
@Query("SELECT new com.namo.spring.db.mysql.domains.user.model.query.FriendBirthdayQuery(fr.id, fr.nickname, fr.birthday) " +
@Query("SELECT new com.namo.spring.db.mysql.domains.user.model.query.FriendshipWithBirthdayQuery(fr.id, fr.nickname, fr.birthday) " +
"FROM Friendship f JOIN f.friend fr " +
"WHERE f.member.id = :memberId " +
"AND fr.birthdayVisible = true " +
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,12 +4,14 @@
import java.util.List;
import java.util.Optional;

import com.namo.spring.db.mysql.domains.user.model.query.MemberWithFriendshipStatusQuery;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.Query;

import com.namo.spring.db.mysql.domains.user.entity.Member;
import com.namo.spring.db.mysql.domains.user.type.MemberStatus;
import com.namo.spring.db.mysql.domains.user.type.SocialType;
import org.springframework.data.repository.query.Param;

public interface MemberRepository extends JpaRepository<Member, Long> {

Expand All @@ -33,4 +35,12 @@ public interface MemberRepository extends JpaRepository<Member, Long> {
Optional<Member> findByIdAndStatus(Long memberId, MemberStatus status);

Optional<Member> findByNicknameAndTagAndStatus(String nickname, String tag, MemberStatus status);

@Query("SELECT new com.namo.spring.db.mysql.domains.user.model.query.MemberWithFriendshipStatusQuery(" +
"m, CASE WHEN f IS NOT NULL THEN f.status ELSE null END) " +
"FROM Member m " +
"LEFT JOIN Friendship f ON f.member.id = :memberId AND f.friend.id = :targetId " +
"WHERE m.id = :targetId")
MemberWithFriendshipStatusQuery findByMemberIdWithFriendStatus(@Param("memberId") Long memberId, @Param("targetId") Long targetId);

}
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@
import java.util.List;
import java.util.Optional;

import com.namo.spring.db.mysql.domains.user.model.query.MemberWithFriendshipStatusQuery;
import org.springframework.transaction.annotation.Transactional;

import com.namo.spring.core.common.annotation.DomainService;
Expand Down Expand Up @@ -39,4 +40,8 @@ public Optional<Member> readMemberByStatus(Long memberId, MemberStatus status){
public Optional<Member> readMemberByStatus(String nickname, String tag, MemberStatus status){
return memberRepository.findByNicknameAndTagAndStatus(nickname, tag, status);
}

public MemberWithFriendshipStatusQuery findMemberWithFriendshipStatus(Long memberId, Long targetId) {
return memberRepository.findByMemberIdWithFriendStatus(memberId, targetId);
}
}

0 comments on commit 9a66e47

Please sign in to comment.