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.live.room.visit.QLiveRoomVisit.liveRoomVisit
|
||||||
import kr.co.vividnext.sodalive.member.Gender
|
import kr.co.vividnext.sodalive.member.Gender
|
||||||
import kr.co.vividnext.sodalive.member.MemberKind
|
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.QMember.member
|
||||||
import kr.co.vividnext.sodalive.member.block.QBlockMember
|
import kr.co.vividnext.sodalive.member.block.QBlockMember
|
||||||
import kr.co.vividnext.sodalive.member.following.QCreatorFollowing.creatorFollowing
|
import kr.co.vividnext.sodalive.member.following.QCreatorFollowing.creatorFollowing
|
||||||
@@ -50,11 +49,10 @@ class DefaultCreatorChannelHomeQueryRepository(
|
|||||||
) : CreatorChannelHomeQueryRepository {
|
) : CreatorChannelHomeQueryRepository {
|
||||||
override fun findCreator(creatorId: Long, viewerId: Long?): CreatorChannelCreatorRecord? {
|
override fun findCreator(creatorId: Long, viewerId: Long?): CreatorChannelCreatorRecord? {
|
||||||
val creator = queryFactory
|
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)
|
.from(member)
|
||||||
.where(
|
.where(
|
||||||
member.id.eq(creatorId),
|
member.id.eq(creatorId),
|
||||||
member.role.eq(MemberRole.CREATOR),
|
|
||||||
member.isActive.isTrue
|
member.isActive.isTrue
|
||||||
)
|
)
|
||||||
.fetchFirst() ?: return null
|
.fetchFirst() ?: return null
|
||||||
@@ -82,6 +80,7 @@ class DefaultCreatorChannelHomeQueryRepository(
|
|||||||
|
|
||||||
return CreatorChannelCreatorRecord(
|
return CreatorChannelCreatorRecord(
|
||||||
creatorId = creator.get(member.id)!!,
|
creatorId = creator.get(member.id)!!,
|
||||||
|
role = creator.get(member.role)!!,
|
||||||
characterId = characterId,
|
characterId = characterId,
|
||||||
nickname = creator.get(member.nickname)!!,
|
nickname = creator.get(member.nickname)!!,
|
||||||
profileImagePath = creator.get(member.profileImage),
|
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.content.ContentType
|
||||||
import kr.co.vividnext.sodalive.member.Gender
|
import kr.co.vividnext.sodalive.member.Gender
|
||||||
|
import kr.co.vividnext.sodalive.member.MemberRole
|
||||||
import kr.co.vividnext.sodalive.v2.common.domain.CreatorActivityType
|
import kr.co.vividnext.sodalive.v2.common.domain.CreatorActivityType
|
||||||
import java.time.LocalDateTime
|
import java.time.LocalDateTime
|
||||||
|
|
||||||
@@ -76,6 +77,7 @@ interface CreatorChannelHomeQueryPort {
|
|||||||
|
|
||||||
data class CreatorChannelCreatorRecord(
|
data class CreatorChannelCreatorRecord(
|
||||||
val creatorId: Long,
|
val creatorId: Long,
|
||||||
|
val role: MemberRole,
|
||||||
val characterId: Long?,
|
val characterId: Long?,
|
||||||
val nickname: String,
|
val nickname: String,
|
||||||
val profileImagePath: String?,
|
val profileImagePath: String?,
|
||||||
|
|||||||
@@ -111,6 +111,19 @@ class DefaultCreatorChannelHomeQueryRepositoryTest @Autowired constructor(
|
|||||||
assertEquals(5, record!!.followerCount)
|
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
|
@Test
|
||||||
@DisplayName("홈 repository 조회는 Phase 3 projection/bulk 최적화 대상에서 entity 전체 fetch와 per-row helper를 사용하지 않는다")
|
@DisplayName("홈 repository 조회는 Phase 3 projection/bulk 최적화 대상에서 entity 전체 fetch와 per-row helper를 사용하지 않는다")
|
||||||
fun shouldUseProjectionAndBulkQueriesForPhaseThreeOptimizedMethods() {
|
fun shouldUseProjectionAndBulkQueriesForPhaseThreeOptimizedMethods() {
|
||||||
|
|||||||
Reference in New Issue
Block a user