灵活的可选查询参数

Slick optional query parameters

我正在使用 Slick 查询数据库。我将 Case class 传递给我的查询方法,它看起来类似于...

case class queryParams(id:Int, age:Option[Int] = None, 
    categoryId:Option[Int] = None)

我有一个类似于...的 Slick 查询

val query = this.filter( row => 
  (row.id == queryParams.id))
query.list

这很好用。但我现在想做的是扩展查询以包括其他 queryParams 成员 "if" 它们已定义但我不确定我应该如何构造它。

我想要的是这样的...

for { row <- this.list 
    if(row.id == queryParams.id)
    // include
    if(queryParams.age.isDefined) row.age == queryParams.age.get
  } yield row

如何在查询中包含可选参数?

谢谢

我最终使用了自定义 "MaybeFilter" 解决方案,该解决方案发布在各个地方,包括...

https://gist.github.com/studiodev/5c6471cb1d823914ee28