feat(home): 크리에이터 랭킹 fallback job 집계를 추가한다
This commit is contained in:
@@ -1,6 +1,8 @@
|
||||
package kr.co.vividnext.sodalive.v2.ranking.adapter.out.persistence
|
||||
|
||||
import kr.co.vividnext.sodalive.v2.ranking.domain.CreatorRankingType
|
||||
import kr.co.vividnext.sodalive.v2.ranking.port.out.CreatorRankingSnapshotJobStatus
|
||||
import kr.co.vividnext.sodalive.v2.ranking.port.out.CreatorRankingSnapshotJobTrigger
|
||||
import org.springframework.data.jpa.repository.JpaRepository
|
||||
import org.springframework.data.jpa.repository.Lock
|
||||
import org.springframework.data.jpa.repository.Query
|
||||
@@ -18,4 +20,11 @@ interface CreatorRankingSnapshotJobRepository : JpaRepository<CreatorRankingSnap
|
||||
aggregationEndAtUtc: LocalDateTime,
|
||||
statuses: List<CreatorRankingSnapshotJobStatus>
|
||||
): List<CreatorRankingSnapshotJob>
|
||||
|
||||
fun countByRankingTypeAndAggregationStartAtUtcAndAggregationEndAtUtcAndTrigger(
|
||||
rankingType: CreatorRankingType,
|
||||
aggregationStartAtUtc: LocalDateTime,
|
||||
aggregationEndAtUtc: LocalDateTime,
|
||||
trigger: CreatorRankingSnapshotJobTrigger
|
||||
): Long
|
||||
}
|
||||
|
||||
@@ -1,8 +1,10 @@
|
||||
package kr.co.vividnext.sodalive.v2.ranking.adapter.out.persistence
|
||||
|
||||
import kr.co.vividnext.sodalive.v2.ranking.domain.CreatorRankingType
|
||||
import kr.co.vividnext.sodalive.v2.ranking.port.out.CreatorRankingSnapshotJobPort
|
||||
import kr.co.vividnext.sodalive.v2.ranking.port.out.CreatorRankingSnapshotJobRecord
|
||||
import kr.co.vividnext.sodalive.v2.ranking.port.out.CreatorRankingSnapshotJobStatus
|
||||
import kr.co.vividnext.sodalive.v2.ranking.port.out.CreatorRankingSnapshotJobTrigger
|
||||
import org.springframework.stereotype.Repository
|
||||
import org.springframework.transaction.annotation.Transactional
|
||||
import java.time.LocalDateTime
|
||||
@@ -32,6 +34,20 @@ class DefaultCreatorRankingSnapshotJobRepository(
|
||||
).map { it.toRecord() }
|
||||
}
|
||||
|
||||
override fun countByRankingTypeAndPeriodAndTrigger(
|
||||
rankingType: CreatorRankingType,
|
||||
aggregationStartAtUtc: LocalDateTime,
|
||||
aggregationEndAtUtc: LocalDateTime,
|
||||
trigger: CreatorRankingSnapshotJobTrigger
|
||||
): Long {
|
||||
return repository.countByRankingTypeAndAggregationStartAtUtcAndAggregationEndAtUtcAndTrigger(
|
||||
rankingType = rankingType,
|
||||
aggregationStartAtUtc = aggregationStartAtUtc,
|
||||
aggregationEndAtUtc = aggregationEndAtUtc,
|
||||
trigger = trigger
|
||||
)
|
||||
}
|
||||
|
||||
@Transactional
|
||||
override fun markProcessing(jobId: Long, processingStartedAt: LocalDateTime): CreatorRankingSnapshotJobRecord? {
|
||||
val job = repository.findByIdForUpdate(jobId) ?: return null
|
||||
|
||||
@@ -14,6 +14,13 @@ interface CreatorRankingSnapshotJobPort {
|
||||
statuses: List<CreatorRankingSnapshotJobStatus>
|
||||
): List<CreatorRankingSnapshotJobRecord>
|
||||
|
||||
fun countByRankingTypeAndPeriodAndTrigger(
|
||||
rankingType: CreatorRankingType,
|
||||
aggregationStartAtUtc: LocalDateTime,
|
||||
aggregationEndAtUtc: LocalDateTime,
|
||||
trigger: CreatorRankingSnapshotJobTrigger
|
||||
): Long
|
||||
|
||||
fun markProcessing(jobId: Long, processingStartedAt: LocalDateTime): CreatorRankingSnapshotJobRecord?
|
||||
|
||||
fun markDone(jobId: Long, processedAt: LocalDateTime): CreatorRankingSnapshotJobRecord?
|
||||
@@ -32,7 +39,8 @@ enum class CreatorRankingSnapshotJobStatus {
|
||||
|
||||
enum class CreatorRankingSnapshotJobTrigger {
|
||||
SCHEDULED,
|
||||
MANUAL
|
||||
MANUAL,
|
||||
FALLBACK
|
||||
}
|
||||
|
||||
data class CreatorRankingSnapshotJobRecord(
|
||||
|
||||
Reference in New Issue
Block a user