Scala, Quill - 如何在 quill 查询中使用 SQL IN 子句?

Scala, Quill - how to use SQL IN clause in quill query?

我有一个数据库,模型如下:

case class Data {
  id: Int, 
  value: Json
}

我想创建搜索查询,它可以通过 csv:

value JSON 中过滤一些字段
def search(id: Int) = {
  ....
  val list = List("value1", "value2", "value3")
  quote(
    myTable.filter( t => t.id == lift(id)))
    .dynamic
    .filter(_ => liftQuery(list).contains(infix""" t.name """.pure.as[Boolean]))
}

问题是它不能正常工作。我不知道如何以其他方式在这里使用 IN 子句。 value 是一个 JSON,其中包含字段 name,现在我想搜索 myTable 中适合传入 list 的值的所有元素。 我也试过做类似的事情:

infix""" t.name in ${list.mkString(",")} """.pure.as[Boolean]

但是也没用。你能帮我解决一些问题吗? quill 文档中没有 IN 子句的好例子。

quote(query[Data].filter(d => liftQuery(list).contains(infix"value->>'name'")))

结果:

SELECT d.id, d.value FROM data d WHERE value->>'name' IN (?, ?, ?)

https://scastie.scala-lang.org/t4YItAweTna6P5dEw1JRTg