Files
sodalive-backend-spring-boot/src/main/kotlin/kr/co/vividnext/sodalive/live/tag/LiveTagRepository.kt

43 lines
1.4 KiB
Kotlin

package kr.co.vividnext.sodalive.live.tag
import com.querydsl.jpa.impl.JPAQueryFactory
import kr.co.vividnext.sodalive.live.tag.QLiveTag.liveTag
import kr.co.vividnext.sodalive.member.Member
import kr.co.vividnext.sodalive.member.MemberRole
import org.springframework.data.jpa.repository.JpaRepository
import org.springframework.stereotype.Repository
@Repository
interface LiveTagRepository : JpaRepository<LiveTag, Long>, LiveTagQueryRepository {
fun findByTag(it: String): LiveTag?
}
interface LiveTagQueryRepository {
fun getTags(member: Member, cloudFrontHost: String): List<GetLiveTagResponse>
}
@Repository
class LiveTagQueryRepositoryImpl(private val queryFactory: JPAQueryFactory) : LiveTagQueryRepository {
override fun getTags(member: Member, cloudFrontHost: String): List<GetLiveTagResponse> {
var where = liveTag.isActive.isTrue
if (member.role != MemberRole.ADMIN && member.auth == null) {
where = where.and(liveTag.isAdult.isFalse)
}
return queryFactory
.select(
QGetLiveTagResponse(
liveTag.id,
liveTag.tag,
liveTag.image.prepend("/").prepend(cloudFrontHost),
liveTag.isAdult
)
)
.from(liveTag)
.where(where)
.orderBy(liveTag.orders.asc())
.fetch()
}
}