1
1
package org.dtree.fhir.server.plugins.scheduler
2
2
3
+ import io.ktor.http.*
3
4
import io.ktor.server.response.*
4
5
import io.ktor.server.routing.*
5
6
import io.ktor.server.util.*
6
7
import io.ktor.utils.io.*
8
+ import org.dtree.fhir.server.data.JobHistoryRepository
7
9
import org.koin.ktor.ext.inject
8
10
import org.quartz.impl.matchers.GroupMatcher
9
11
import java.time.format.DateTimeFormatter
10
12
11
13
@OptIn(InternalAPI ::class )
12
14
fun Route.schedulerRoutes () {
13
15
val schedulerManager by inject<JobSchedulerManager >()
16
+ val jobHistoryRepository by inject<JobHistoryRepository >()
14
17
15
18
get(" /jobs/active" ) {
16
19
val activeJobs = schedulerManager.scheduler.jobGroupNames.flatMap { groupName ->
@@ -35,8 +38,10 @@ fun Route.schedulerRoutes() {
35
38
mapOf (
36
39
" jobName" to jobKey.name,
37
40
" 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 )
40
45
)
41
46
}
42
47
}
@@ -55,4 +60,21 @@ fun Route.schedulerRoutes() {
55
60
}
56
61
call.respond(runningJobs)
57
62
}
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
+ }
58
80
}
0 commit comments