私は2つOption
のsを持っています:
val name: Option[String] = ...
val shared: Option[Boolean] = ...
上記の値が の場合はこれらのフィールドを作成し、 の場合はそのままにしておくUPDATE
クエリを作成したいと思います。SET
Some
None
私はこのようにこれを達成することができましたが、余分な列を追加する必要がある場合、コンマのチェックにはあまり熱心ではありません。また、を使用する必要があることにもあまり熱心ではありませんvar
。
var query = Q.u + "UPDATE wishlist SET"
if(name.isDefined) query = query + " name = " +? name + (if (share.isDefined) ", " else "")
if(shared.isDefined) query = query + " shared = " +? share
SQL インジェクションに関心がなければ、次のようなことができます。
val fields = List(
name.map(n => s"name = '$n'"),
shared.map(e => s"shared = $e")
).flatten
s"UPDATE wishlist SET ${fields.mkString(", ")}"
質問: Slick の単純な SQL/String 補間でこれを行うより良い方法はありますか?