Skip to content

Commit 672f9b1

Browse files
committed
Add job history
1 parent 1cee257 commit 672f9b1

File tree

1 file changed

+24
-2
lines changed
  • server/src/main/kotlin/org/dtree/fhir/server/plugins/scheduler

1 file changed

+24
-2
lines changed

server/src/main/kotlin/org/dtree/fhir/server/plugins/scheduler/endpoints.kt

Lines changed: 24 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,19 @@
11
package org.dtree.fhir.server.plugins.scheduler
22

3+
import io.ktor.http.*
34
import io.ktor.server.response.*
45
import io.ktor.server.routing.*
56
import io.ktor.server.util.*
67
import io.ktor.utils.io.*
8+
import org.dtree.fhir.server.data.JobHistoryRepository
79
import org.koin.ktor.ext.inject
810
import org.quartz.impl.matchers.GroupMatcher
911
import java.time.format.DateTimeFormatter
1012

1113
@OptIn(InternalAPI::class)
1214
fun Route.schedulerRoutes() {
1315
val schedulerManager by inject<JobSchedulerManager>()
16+
val jobHistoryRepository by inject<JobHistoryRepository>()
1417

1518
get("/jobs/active") {
1619
val activeJobs = schedulerManager.scheduler.jobGroupNames.flatMap { groupName ->
@@ -35,8 +38,10 @@ fun Route.schedulerRoutes() {
3538
mapOf(
3639
"jobName" to jobKey.name,
3740
"jobGroup" to jobKey.group,
38-
"nextFireTime" to trigger.nextFireTime?.toZonedDateTime()?.format(DateTimeFormatter.ISO_INSTANT),
39-
"previousFireTime" to trigger.previousFireTime?.toZonedDateTime()?.format(DateTimeFormatter.ISO_INSTANT)
41+
"nextFireTime" to trigger.nextFireTime?.toZonedDateTime()
42+
?.format(DateTimeFormatter.ISO_INSTANT),
43+
"previousFireTime" to trigger.previousFireTime?.toZonedDateTime()
44+
?.format(DateTimeFormatter.ISO_INSTANT)
4045
)
4146
}
4247
}
@@ -55,4 +60,21 @@ fun Route.schedulerRoutes() {
5560
}
5661
call.respond(runningJobs)
5762
}
63+
64+
get("/jobs/{group}/{name}/history") {
65+
val groupName = call.parameters["group"] ?: return@get call.respond(
66+
HttpStatusCode.BadRequest,
67+
mapOf("error" to "Group name is required")
68+
)
69+
70+
val jobName = call.parameters["name"] ?: return@get call.respond(
71+
HttpStatusCode.BadRequest,
72+
mapOf("error" to "Job name is required")
73+
)
74+
75+
val limit = call.request.queryParameters["limit"]?.toIntOrNull() ?: 100
76+
77+
val history = jobHistoryRepository.getJobHistory(jobName, groupName, limit)
78+
call.respond(history)
79+
}
5880
}

0 commit comments

Comments
 (0)