Consulta dinámica con cláusulas where opcionales usando Slick 3

Estoy tratando de implementar un método para devolver resultados filtrados, basado en un conjunto de parámetros que pueden o no establecerse. No parece que sea posible encadenar múltiples filtros condicionalmente, es decir, comenzar con un filtro ...

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

Agregar condicionalmente otro filtro a la consulta (si existe en el Mapa de parámetros) no parece funcionar ...

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

¿Se puede hacer este tipo de filtrado condicional usando Slick a través de otros medios?

Me he encontrado con el MaybeFilter:https://gist.github.com/cvogt/9193220, que parece ser un enfoque decente para manejar exactamente esto. Sin embargo, no parece funcionar con Slick 3.x

Siguiendo las sugerencias de Hüseyin a continuación, también he intentado lo siguiente:

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

DóndeslickFlights es un objeto TableQueryval slickFlights = TableQuery[Flights]. Sin embargo, esto produce el siguiente error de compilación:

value === is not a member of String

Intellij también se queja de que === es un símbolo desconocido. No funciona con == tampoco.

Respuestas a la pregunta(4)

Su respuesta a la pregunta