feat(creator): 채널 홈 조회 계약을 보정한다
This commit is contained in:
@@ -22,7 +22,6 @@ import kr.co.vividnext.sodalive.live.room.QLiveRoom.liveRoom
|
||||
import kr.co.vividnext.sodalive.live.room.visit.QLiveRoomVisit.liveRoomVisit
|
||||
import kr.co.vividnext.sodalive.member.Gender
|
||||
import kr.co.vividnext.sodalive.member.MemberKind
|
||||
import kr.co.vividnext.sodalive.member.MemberRole
|
||||
import kr.co.vividnext.sodalive.member.QMember.member
|
||||
import kr.co.vividnext.sodalive.member.block.QBlockMember
|
||||
import kr.co.vividnext.sodalive.member.following.QCreatorFollowing.creatorFollowing
|
||||
@@ -50,11 +49,10 @@ class DefaultCreatorChannelHomeQueryRepository(
|
||||
) : CreatorChannelHomeQueryRepository {
|
||||
override fun findCreator(creatorId: Long, viewerId: Long?): CreatorChannelCreatorRecord? {
|
||||
val creator = queryFactory
|
||||
.select(member.id, member.nickname, member.profileImage, member.introduce, member.memberKind)
|
||||
.select(member.id, member.role, member.nickname, member.profileImage, member.introduce, member.memberKind)
|
||||
.from(member)
|
||||
.where(
|
||||
member.id.eq(creatorId),
|
||||
member.role.eq(MemberRole.CREATOR),
|
||||
member.isActive.isTrue
|
||||
)
|
||||
.fetchFirst() ?: return null
|
||||
@@ -82,6 +80,7 @@ class DefaultCreatorChannelHomeQueryRepository(
|
||||
|
||||
return CreatorChannelCreatorRecord(
|
||||
creatorId = creator.get(member.id)!!,
|
||||
role = creator.get(member.role)!!,
|
||||
characterId = characterId,
|
||||
nickname = creator.get(member.nickname)!!,
|
||||
profileImagePath = creator.get(member.profileImage),
|
||||
|
||||
@@ -2,6 +2,7 @@ package kr.co.vividnext.sodalive.v2.creator.channel.port.out
|
||||
|
||||
import kr.co.vividnext.sodalive.content.ContentType
|
||||
import kr.co.vividnext.sodalive.member.Gender
|
||||
import kr.co.vividnext.sodalive.member.MemberRole
|
||||
import kr.co.vividnext.sodalive.v2.common.domain.CreatorActivityType
|
||||
import java.time.LocalDateTime
|
||||
|
||||
@@ -76,6 +77,7 @@ interface CreatorChannelHomeQueryPort {
|
||||
|
||||
data class CreatorChannelCreatorRecord(
|
||||
val creatorId: Long,
|
||||
val role: MemberRole,
|
||||
val characterId: Long?,
|
||||
val nickname: String,
|
||||
val profileImagePath: String?,
|
||||
|
||||
@@ -111,6 +111,19 @@ class DefaultCreatorChannelHomeQueryRepositoryTest @Autowired constructor(
|
||||
assertEquals(5, record!!.followerCount)
|
||||
}
|
||||
|
||||
@Test
|
||||
@DisplayName("기본 회원 조회는 비크리에이터도 role과 함께 반환해 service가 기존 채널 정책 순서로 검증할 수 있게 한다")
|
||||
fun shouldFindNonCreatorMemberWithRoleForServiceValidationOrder() {
|
||||
val user = saveMember("non-creator-target", MemberRole.USER)
|
||||
flushAndClear()
|
||||
|
||||
val record = repository.findCreator(user.id!!, viewerId = null)
|
||||
|
||||
assertNotNull(record)
|
||||
assertEquals(MemberRole.USER, record!!.role)
|
||||
assertEquals(user.id, record.creatorId)
|
||||
}
|
||||
|
||||
@Test
|
||||
@DisplayName("홈 repository 조회는 Phase 3 projection/bulk 최적화 대상에서 entity 전체 fetch와 per-row helper를 사용하지 않는다")
|
||||
fun shouldUseProjectionAndBulkQueriesForPhaseThreeOptimizedMethods() {
|
||||
|
||||
Reference in New Issue
Block a user