Как добавить несколько условий фильтрации на основе входящих параметров в Exposed DAO API ".find" - PullRequest
0 голосов
/ 27 сентября 2018

Я пишу приложение dropwizard, используя kotlin, и один из методов ресурса получит несколько параметров (электронная почта, телефон, is_deleted и т. Д.).Исходя из параметров входящего запроса, я должен отфильтровать таблицу.Я использую DAO API Exposed для построения запроса.

val result = User.find { //SqlExpressionBuilder Users.isDeleted eq false Users.email eq "so@soso.com" }.sortedByDescending { it.createdAt }

Как добавить несколько условий условия в запрос на основе карты параметров запроса с использованием цикла for in?

1 Ответ

0 голосов
/ 03 октября 2018

Мне пришлось решить проблему с помощью DSL.Похоже, DAO не имеет такого положения для создания такого запроса adhoc.

val query = Users.selectAll()
for((k, v) in params) {
    val value = URLDecoder.decode(v, "UTF-8")
    when(value) {
        "email" -> query.andWhere { Users.email eq value }
        "phone" -> query.andWhere { Users.phone eq value }
    }
}
return query.andWhere { Users.isDeleted.eq(false) }

Как уже упоминалось @Tapac, можно использовать User.wrapRows(query).sortedByDescending() также для формирования такого запроса, но опять же нужно использовать DSL.

Надеюсь, что кому-то поможет.

...