diff --git a/src/main/kotlin/kr/co/vividnext/sodalive/admin/point/GetPointRewardPolicyResponse.kt b/src/main/kotlin/kr/co/vividnext/sodalive/admin/point/GetPointRewardPolicyListResponse.kt similarity index 66% rename from src/main/kotlin/kr/co/vividnext/sodalive/admin/point/GetPointRewardPolicyResponse.kt rename to src/main/kotlin/kr/co/vividnext/sodalive/admin/point/GetPointRewardPolicyListResponse.kt index 4e8203d..33dd64e 100644 --- a/src/main/kotlin/kr/co/vividnext/sodalive/admin/point/GetPointRewardPolicyResponse.kt +++ b/src/main/kotlin/kr/co/vividnext/sodalive/admin/point/GetPointRewardPolicyListResponse.kt @@ -3,7 +3,12 @@ package kr.co.vividnext.sodalive.admin.point import com.querydsl.core.annotations.QueryProjection import kr.co.vividnext.sodalive.useraction.ActionType -data class GetPointRewardPolicyResponse @QueryProjection constructor( +data class GetPointRewardPolicyListResponse( + val totalCount: Int, + val items: List +) + +data class GetPointRewardPolicyListItem @QueryProjection constructor( val id: Long, val title: String, val actionType: ActionType, diff --git a/src/main/kotlin/kr/co/vividnext/sodalive/admin/point/PointPolicyRepository.kt b/src/main/kotlin/kr/co/vividnext/sodalive/admin/point/PointPolicyRepository.kt index 3c644d5..d439d4d 100644 --- a/src/main/kotlin/kr/co/vividnext/sodalive/admin/point/PointPolicyRepository.kt +++ b/src/main/kotlin/kr/co/vividnext/sodalive/admin/point/PointPolicyRepository.kt @@ -12,16 +12,25 @@ import java.time.LocalDateTime interface PointPolicyRepository : JpaRepository, PointPolicyQueryRepository interface PointPolicyQueryRepository { - fun getAll(offset: Long, limit: Long): List + fun getTotalCount(): Int + fun getAll(offset: Long, limit: Long): List } class PointPolicyQueryRepositoryImpl( private val queryFactory: JPAQueryFactory ) : PointPolicyQueryRepository { - override fun getAll(offset: Long, limit: Long): List { + override fun getTotalCount(): Int { + return queryFactory + .select(pointRewardPolicy.id) + .from(pointRewardPolicy) + .fetch() + .size + } + + override fun getAll(offset: Long, limit: Long): List { return queryFactory .select( - QGetPointRewardPolicyResponse( + QGetPointRewardPolicyListItem( pointRewardPolicy.id, pointRewardPolicy.title, pointRewardPolicy.actionType, diff --git a/src/main/kotlin/kr/co/vividnext/sodalive/admin/point/PointPolicyService.kt b/src/main/kotlin/kr/co/vividnext/sodalive/admin/point/PointPolicyService.kt index d5b8c54..1616b84 100644 --- a/src/main/kotlin/kr/co/vividnext/sodalive/admin/point/PointPolicyService.kt +++ b/src/main/kotlin/kr/co/vividnext/sodalive/admin/point/PointPolicyService.kt @@ -9,8 +9,11 @@ import java.time.format.DateTimeFormatter @Service class PointPolicyService(private val repository: PointPolicyRepository) { - fun getAll(offset: Long, limit: Long): List { - return repository.getAll(offset, limit) + fun getAll(offset: Long, limit: Long): GetPointRewardPolicyListResponse { + val totalCount = repository.getTotalCount() + val items = repository.getAll(offset, limit) + + return GetPointRewardPolicyListResponse(totalCount, items) } fun create(request: CreatePointRewardPolicyRequest) {