Changed SQL and expanded to multi key search/filter

This commit is contained in:
Brage Skjønborg 2026-01-29 07:28:14 +01:00
parent 1ca711a3e2
commit 76fa917104
5 changed files with 25 additions and 13 deletions

View File

@ -13,12 +13,12 @@ data class EventQuery(
override val order: Sort = Sort.DESC,
override val page: Int = 0,
override val pageSize: Int = 50,
override val key: String?
override val key: List<String>?
) : PagedQuery {
fun toQueryParams(): MultiValueMap<String, String> {
val params = LinkedMultiValueMap<String, String>()
key?.let { params.add("key", it) }
key?.forEach { params.add("key", it) }
referenceId?.let { params.add("referenceId", it) }
eventId?.let { params.add("eventId", it) }
from?.let { params.add("from", it.toString()) }

View File

@ -5,5 +5,5 @@ interface PagedQuery {
val pageSize: Int
val sort: String
val order: Sort
val key: String?
val key: List<String>?
}

View File

@ -15,12 +15,12 @@ data class TaskQuery(
override val order: Sort = Sort.DESC,
override val page: Int = 0,
override val pageSize: Int = 50,
override val key: String? = null
override val key: List<String>? = null
): PagedQuery {
fun toQueryParams(): MultiValueMap<String, String> {
val params = LinkedMultiValueMap<String, String>()
key?.let { params.add("key", it) }
key?.forEach { params.add("key", it) }
status?.forEach { params.add("status", it) }
claimed?.let { params.add("claimed", it.toString()) }
consumed?.let { params.add("consumed", it.toString()) }

View File

@ -10,7 +10,9 @@ import no.iktdev.mediaprocessing.shared.common.dto.Paginated
import no.iktdev.mediaprocessing.shared.database.queries.pagedQuery
import no.iktdev.mediaprocessing.shared.database.tables.EventsTable
import no.iktdev.mediaprocessing.shared.database.withTransaction
import org.jetbrains.exposed.sql.Op
import org.jetbrains.exposed.sql.insert
import org.jetbrains.exposed.sql.or
import org.jetbrains.exposed.sql.selectAll
import java.time.Instant
import java.util.*
@ -37,8 +39,14 @@ object EventStore: EventStore {
where { EventsTable.eventId like "%$id%" }
}
query.key?.let { ev ->
where { EventsTable.event like "%$ev%" }
query.key?.let { keys ->
if (keys.isNotEmpty()) {
where {
keys
.map { key -> EventsTable.event like "%$key%" }
.reduce(Op<Boolean>::or)
}
}
}
query.from?.let { from ->

View File

@ -11,10 +11,7 @@ import no.iktdev.mediaprocessing.shared.common.dto.TaskQuery
import no.iktdev.mediaprocessing.shared.database.queries.pagedQuery
import no.iktdev.mediaprocessing.shared.database.tables.TasksTable
import no.iktdev.mediaprocessing.shared.database.withTransaction
import org.jetbrains.exposed.sql.and
import org.jetbrains.exposed.sql.insert
import org.jetbrains.exposed.sql.selectAll
import org.jetbrains.exposed.sql.update
import org.jetbrains.exposed.sql.*
import java.time.Duration
import java.util.*
@ -36,9 +33,16 @@ object TaskStore: TaskStore {
val enums = statuses.map { TaskStatus.valueOf(it) }
where { TasksTable.status inList enums }
}
query.key?.let { k ->
where { TasksTable.task like "%$k%" }
query.key?.let { keys ->
if (keys.isNotEmpty()) {
where {
keys
.map { key -> TasksTable.task like "%$key%" }
.reduce(Op<Boolean>::or)
}
}
}
query.claimed?.let { where { TasksTable.claimed eq it } }
query.consumed?.let { where { TasksTable.consumed eq it } }
query.referenceId?.let { where { TasksTable.referenceId like "%$it%" } }