def cond[A](value: A)(f: PartialFunction[A, SQLBuilder => SQLBuilder]): SQLBuilder
こんな感じの(実際にはSQLBuilderはサブクラス型にしないとだけど)あれば下みたいに書けるかなー
val id: Option[Int] = ...
val name: Option[String] = ...
select(c.*)
.from(Customer as c)
.where
.cond(id) { case Some(i) => _.eq(c.id, i) }
.and
.cond(name) { case Some(n) => _.eq(c.name, n) }
と思うけど、 .where とか .and とかはどうしょうもなくてぐぬぬ
下地の準備はできたけど、いい名前が思いつかない。
単純に and/or もまだメソッド名としては空いているけど、直前に .and とか .or を呼ぶ場合もあり得るのでそうすると and(SQLSyntax*) は紛らわしい。.or.or(...) になっていないとシンタックスエラーとか罠すぎる。
xxxConditions はちょっと説明的すぎる感があって微妙な気がする。
andAll/andOpt とかも考えたが、初見で意味が分かりづらいのでよくないかと。文字列の結合ということで join 何とかみたいな名前も考えたがテーブル結合と紛らわしいので避けたいし、で決まらず。