These are chat archives for scalikejdbc/ja

2nd
May 2016
Kazuhiro Sera
@seratch
May 02 2016 01:37
結果、このようにしようとしていますが、アイデアなどあればおしらせください(ここでのコメントでも大丈夫です) scalikejdbc/scalikejdbc#514
Manabu Nakamura
@gakuzzzz
May 02 2016 20:38
ParameterBinder が asIs を持ってるのは何かまずい気がしますね。
Any で受け取る SQL Interpolation の仕組みの上で静的チェックを行うための ParameterBinderFactory なので、さらにその上に ParameterBinder を バイパスして Any で通す仕組みを作るのはアレゲな気がしてきました。
それならまだ以前の SQLSyntax と Any で受け取る API を別名で残す方がいいかも。
ParameterBinder の value に ParameterBinder が来る可能性がある......?
Manabu Nakamura
@gakuzzzz
May 02 2016 20:52
その時点で何か混乱を来たしているような......。 どのタイミングで ParameterBinder の value に ParameterBinder が入るんでしょう?
Manabu Nakamura
@gakuzzzz
May 02 2016 21:16

あるいは [A: ParameterBinderFactory](SQLSyntax, A) な API の overload で (SQLSyntax, ParameterBinder) を用意して AsIsParameterBinder を使うか。

その場合でも extract にあそこまでややこしいことしなくて単純に value 返すだけで良さそうな気がします。 StatementExecutor 側で再帰さえすれば

overload は in とかで組み合わせ爆発で死ぬか......
Manabu Nakamura
@gakuzzzz
May 02 2016 21:34
SQLInterpolationString で AsIs を気にしてるのは何故なんでしょう?
Manabu Nakamura
@gakuzzzz
May 02 2016 21:56
あー ParameterBinderFactory が ParameterBinderWithValue に限定してるからややこしいのか
Manabu Nakamura
@gakuzzzz
May 02 2016 22:16
こんな感じのはいかがでしょう?
scalikejdbc/scalikejdbc@2871b48
Manabu Nakamura
@gakuzzzz
May 02 2016 22:33
微妙に直しました。
scalikejdbc/scalikejdbc@5aeb9a2
Kazuhiro Sera
@seratch
May 02 2016 23:09

どのタイミングで ParameterBinder の value に ParameterBinder が入るんでしょう?

Any でもらうということはそれが ParameterBinder である可能性もあるので、その中に AsIs が埋もれてしまうケースも存在するんですよね。

Kazuhiro Sera
@seratch
May 02 2016 23:14
最初、がくぞさんのやっているものに近かったですが、これでは私が書いているニーズは満たせないです。
AsIsParameterBinder は推奨するものではなく、ParameterBinderFactory を bypass するものです。なんなら名前は BypassParameterBinder とかでもいいです。
https://github.com/scalikejdbc/scalikejdbc/pull/514#issuecomment-216359343
ちょっとなんてレスしたらいいのか意図がわからなかったです(null / Option の操作は単純に JDBC に Option を渡さないよう潰しているだけなので今までの延長なんですが)。BypassParameterBinder とリネームしてコンパイルエラーメッセージの example から外して、推奨しない存在とする分はどうでしょう?
Kazuhiro Sera
@seratch
May 02 2016 23:38
そういえば瑣末な点ですけどがくぞさんも fork して作業して欲しいです。対象者が少ないので contribution guide はそうしなければならないと記述はないですが..

There are many many null/option check...

ああ、これはあのネストしてるかもしれないものを取り出してる処理が何度も呼び出されていることに対するコメントかな。