Я пытаюсь реализовать метод возврата отфильтрованных результатов на основе набора параметров, которые могут быть или не могут быть установлены. Это не похоже, цепочки несколько фильтров можно условно, то есть начинать с одного фильтра ...Динамический запрос с дополнительными предложениями, использующими Slick 3
val slickFlights = TableQuery[Flights]
val query = slickFlights.filter(_.departureLocation === params("departureLocation").toString)
условно добавив еще один фильтр запроса (если он существует в Карте Params) не кажется для работы ...
if (params.contains("arrivalLocation")) {
query.filter(_.arrivalLocation === params("arrivalLocation").toString)
}
Можно ли это условно фильтровать, используя Slick другими способами?
Я столкнулся с MaybeFilter: https://gist.github.com/cvogt/9193220, который, кажется, подходит для решения именно этого. Однако это не похоже на работу с Slick 3.x
После предложений huseyın в ниже, я также попытался следующие:
def search(departureLocation: Option[String], arrivalLocation: Option[String]) = {
val query = slickFlights.filter(flight =>
departureLocation.map {
param => param === flight.departureLocation
})
Где slickFlights
является объектом TableQuery val slickFlights = TableQuery[Flights]
. Однако это приводит к следующей ошибке компиляции:
value === is not a member of String
Intellij также жалуется на наличие === неизвестного символа. Не работает с ==.