Changed SQL and expanded to multi key search/filter
This commit is contained in:
parent
1ca711a3e2
commit
76fa917104
@ -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()) }
|
||||
|
||||
@ -5,5 +5,5 @@ interface PagedQuery {
|
||||
val pageSize: Int
|
||||
val sort: String
|
||||
val order: Sort
|
||||
val key: String?
|
||||
val key: List<String>?
|
||||
}
|
||||
|
||||
@ -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()) }
|
||||
|
||||
@ -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 ->
|
||||
|
||||
@ -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%" } }
|
||||
|
||||
Loading…
Reference in New Issue
Block a user