Skip to content
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
@@ -1,9 +1,11 @@
package core.contests.leetcode.service


import java.time.DayOfWeek
import java.time.DayOfWeek.{ SATURDAY, SUNDAY }
import java.util.concurrent.ScheduledFuture

import core.contests.leetcode.model.ContestType
import core.contests.leetcode.model.ContestType.{ Biweekly, Weekly }
import core.contests.leetcode.service.OngoingContest.{
predictCurrentBoth,
Expand All @@ -18,6 +20,31 @@ import scheduler.{ HourlyJobPlan, Scheduler, WeeklyJobPlan }
object LeetCodeScheduler
extends Scheduler:

private val LiveRankSyncIntervalMinutes = 10

private def liveRankSyncJobPlans(
dayOfWeek: DayOfWeek,
startHour: Int,
startMinute: Int,
endHour: Int,
endMinute: Int,
contestType: ContestType,
): List[WeeklyJobPlan] =
val start = startHour * 60 + startMinute
val end = endHour * 60 + endMinute

(start to end by LiveRankSyncIntervalMinutes).map { totalMinutes =>
WeeklyJobPlan(
dayOfWeek,
totalMinutes / 60,
totalMinutes % 60,
0,
s"Live Predict Contest $contestType",
() => predictCurrent(contestType),
)
}.toList
end liveRankSyncJobPlans

override protected def hourlyJobPlans: List[HourlyJobPlan] =
List(
HourlyJobPlan(1, 0, "Upsert Recent Contests", () => upsertRecentContestsAndQuestions()),
Expand All @@ -36,11 +63,20 @@ object LeetCodeScheduler
WeeklyJobPlan(SUNDAY, 4, 43, 0, "Predict Contest", () => predictCurrent(Weekly)),
)

val liveRankSync = liveRankSyncJobPlans(
dayOfWeek = SUNDAY,
startHour = 2,
startMinute = 35,
endHour = 3,
endMinute = 55,
contestType = Weekly,
)

val hours = 5 to 23
val additional = hours.map { h =>
WeeklyJobPlan(SUNDAY, h, 0, 0, "Predict Contest", () => predictCurrentBoth())
}.toList
base ::: additional
base ::: liveRankSync ::: additional
end weeklyJobPlans

private def startBiweeklyJobs(): List[ScheduledFuture[?]] =
Expand All @@ -54,10 +90,19 @@ object LeetCodeScheduler
WeeklyJobPlan(SATURDAY, 16, 3, 0, "Predict Contest", () => predictCurrent(Biweekly)),
WeeklyJobPlan(SATURDAY, 16, 23, 0, "Predict Contest", () => predictCurrent(Biweekly)),
WeeklyJobPlan(SATURDAY, 16, 43, 0, "Predict Contest", () => predictCurrent(Biweekly)),
) ::: (17 to 23).map { h =>
)
val liveRankSync = liveRankSyncJobPlans(
dayOfWeek = SATURDAY,
startHour = 14,
startMinute = 35,
endHour = 15,
endMinute = 55,
contestType = Biweekly,
)
val hourlyAfterContest = (17 to 23).map { h =>
WeeklyJobPlan(SATURDAY, h, 0, 0, "Predict Contest", () => predictCurrent(Biweekly))
}.toList
startWeeklyJobs(biweeklyJobPlans)
startWeeklyJobs(biweeklyJobPlans ::: liveRankSync ::: hourlyAfterContest)
end startBiweeklyJobs

override def startJobs(): List[ScheduledFuture[?]] =
Expand Down