filter条件が入力されてればwhereに追加したいけどquillではどうやるのかメモ
フィルター条件にユーザ名が入力されるかもしれない場合を例にしてみる
quoteでそれぞれのクエリ生成部分を囲んで繋げる
val name: Option[String] = Some("alderweireld") // ユーザ名 ※ある場合
val limit: Int = 20
val q1 = quote(users)
val q2 = name match {
case Some(n: String) => quote { q1.filter(_.name == lift(n) } // 値があれば条件に追加
case None => quote(q1) // 値が無ければそのままq1を返す
}
val q = quote { // その他の処理
q2.sortBy(_.createdAt)(Ord.desc)
.take(lift(limit))
.map(_.id)
}
db.run(q)
ポイントはname match {}
ごとquoteで囲まないようにするくらい
以上