Динамический запрос с необязательными предложениями where с использованием Slick 3

Я пытаюсь реализовать метод для возврата отфильтрованных результатов, основанный на наборе параметров, которые могут быть или не быть установлены. Не похоже, что связывание нескольких фильтров возможно условно, то есть начиная с одного фильтра ...

val slickFlights = TableQuery[Flights]
val query = slickFlights.filter(_.departureLocation === params("departureLocation").toString)

Условное добавление еще одного фильтра в запрос (если он существует в карте параметров) не работает ...

if (params.contains("arrivalLocation")) {
      query.filter(_.arrivalLocation === params("arrivalLocation").toString)
}

Можно ли выполнить подобную условную фильтрацию с помощью Slick другими способами?

Я столкнулся с MaybeFilter:https://gist.github.com/cvogt/9193220, который, кажется, достойный подход для обработки именно этого. Однако он не работает с Slick 3.x

Следуя рекомендациям Хусейна, приведенным ниже, я также попробовал следующее:

def search(departureLocation: Option[String], arrivalLocation: Option[String]) = {
    val query = slickFlights.filter(flight =>
       departureLocation.map {
          param => param === flight.departureLocation
       })

кудаslickFlights является объектом TableQueryval slickFlights = TableQuery[Flights], Однако это приводит к следующей ошибке компиляции:

value === is not a member of String

Intellij также жалуется на то, что === является неизвестным символом. Также не работает с ==.

Ответы на вопрос(4)

Ваш ответ на вопрос