summaryrefslogtreecommitdiff
path: root/src/main
diff options
context:
space:
mode:
Diffstat (limited to 'src/main')
-rw-r--r--src/main/kotlin/dev/dnpm/etl/processor/monitoring/Request.kt5
-rw-r--r--src/main/kotlin/dev/dnpm/etl/processor/web/StatisticsRestController.kt12
2 files changed, 7 insertions, 10 deletions
diff --git a/src/main/kotlin/dev/dnpm/etl/processor/monitoring/Request.kt b/src/main/kotlin/dev/dnpm/etl/processor/monitoring/Request.kt
index b3e2726..5e6e773 100644
--- a/src/main/kotlin/dev/dnpm/etl/processor/monitoring/Request.kt
+++ b/src/main/kotlin/dev/dnpm/etl/processor/monitoring/Request.kt
@@ -57,9 +57,12 @@ interface RequestRepository : CrudRepository<Request, Long> {
fun findByUuidEquals(uuid: String): Optional<Request>
+ @Query("SELECT count(*) AS count, status FROM request GROUP BY status ORDER BY status, count DESC;")
+ fun countStates(): List<CountedState>
+
@Query("SELECT count(*) AS count, status FROM (" +
"SELECT status, rank() OVER (PARTITION BY patient_id ORDER BY processed_at DESC) AS rank FROM request WHERE status NOT IN ('DUPLICATION')" +
- ") rank WHERE rank = 1 GROUP BY status ORDER BY count DESC;")
+ ") rank WHERE rank = 1 GROUP BY status ORDER BY status, count DESC;")
fun findPatientUniqueStates(): List<CountedState>
} \ No newline at end of file
diff --git a/src/main/kotlin/dev/dnpm/etl/processor/web/StatisticsRestController.kt b/src/main/kotlin/dev/dnpm/etl/processor/web/StatisticsRestController.kt
index 6da0bfb..1e56c28 100644
--- a/src/main/kotlin/dev/dnpm/etl/processor/web/StatisticsRestController.kt
+++ b/src/main/kotlin/dev/dnpm/etl/processor/web/StatisticsRestController.kt
@@ -19,10 +19,8 @@
package dev.dnpm.etl.processor.web
-import dev.dnpm.etl.processor.monitoring.PatientUniqueState
import dev.dnpm.etl.processor.monitoring.RequestRepository
import dev.dnpm.etl.processor.monitoring.RequestStatus
-import org.reactivestreams.Publisher
import org.springframework.http.MediaType
import org.springframework.http.codec.ServerSentEvent
import org.springframework.web.bind.annotation.GetMapping
@@ -30,13 +28,10 @@ import org.springframework.web.bind.annotation.RequestMapping
import org.springframework.web.bind.annotation.RestController
import reactor.core.publisher.Flux
import reactor.core.publisher.Sinks
-import reactor.kotlin.core.publisher.toFlux
import java.time.Instant
-import java.time.Month
import java.time.ZoneId
import java.time.format.DateTimeFormatter
import java.time.temporal.ChronoUnit
-import java.time.temporal.TemporalUnit
@RestController
@RequestMapping(path = ["/statistics"])
@@ -47,16 +42,15 @@ class StatisticsRestController(
@GetMapping(path = ["requeststates"])
fun requestStates(): List<NameValue> {
- return requestRepository.findAll()
- .groupBy { it.status }
+ return requestRepository.countStates()
.map {
- val color = when (it.key) {
+ val color = when (it.status) {
RequestStatus.ERROR -> "red"
RequestStatus.WARNING -> "darkorange"
RequestStatus.SUCCESS -> "green"
else -> "slategray"
}
- NameValue(it.key.toString(), it.value.size, color)
+ NameValue(it.status.toString(), it.count, color)
}
.sortedByDescending { it.value }
}