These are chat archives for scalikejdbc/ja

30th
Apr 2016
Kazuhiro Sera
@seratch
Apr 30 2016 07:37
skinny orm は内部実装的にかなり Any を許容しているので ParameterBinderFactory はだいぶあたりが大きくて若干困ってますね。
Manabu Nakamura
@gakuzzzz
Apr 30 2016 08:01
確かに Entity で抽象化しちゃってるから各フィールドの型も取り辛いし悩ましいですね……。 unzip して columns と values 使うか
Kazuhiro Sera
@seratch
Apr 30 2016 08:03
内部的に querydsl 使ってるところ全部 Any に対する ParameterBinderFactory を要求されるようになってて、かといって Any を bind する ParameterBinderFactory って connectionAtrributes 持ってないから厳密には挙動が変わる(今は datetime の timezone だけですが)ので書きたくないな(今ここ)
かといって querydsl を使わないように書き換えると sql.in とかの実装が使えなくなるし、それもつらい。
Manabu Nakamura
@gakuzzzz
Apr 30 2016 08:09
(SQLSyntax, Any) の 所はユーザに見える部分も含めて (SQLSyntax, ParameterBinder) にしてしまえば SQLSyntax#-> があるから何とかなりそうですけど relation 系のSymbol が残りますね
後は PermittedStrongParameters からの変換か
Kazuhiro Sera
@seratch
Apr 30 2016 08:10
FactoryGirl とかもあるんで Any を排除はできないです
ORM の利用者側のインタフェースが変わるのはまあいいんですけど。ちゃんと動いているソースコード互換になるはずなので。
これは columns/values でいけるかな>FactoryGirl とかもあるんで Any を排除はできないです
Manabu Nakamura
@gakuzzzz
Apr 30 2016 08:13
なるほど。
updateのsetやinも insertのcolumns/values に相応するような Any の interface も生やしておきますか?
Kazuhiro Sera
@seratch
Apr 30 2016 08:16
それもいいんですが、どちらかというと UnsafeParameterBinder みたいな明らかに推奨されない名前で "分かって使う" 抜け道があると助かるのかなとか...。
Manabu Nakamura
@gakuzzzz
Apr 30 2016 08:27
あれ? 今ってもしかして QueryDSL の in に直接 ParameterBinder を渡せないですね。 ParameterBinderFactory[ParameterBinder] が必要……?
Manabu Nakamura
@gakuzzzz
Apr 30 2016 08:38
ParamType に ParameterBinderFactory 持たせたらなんとかならないかな……
Kazuhiro Sera
@seratch
Apr 30 2016 09:21
UnsafeParameterBinder あらため AsIsParameterBinder を導入しようかと作業中です。

あれ? 今ってもしかして QueryDSL の in に直接 ParameterBinder を渡せないですね。 ParameterBinderFactory[ParameterBinder] が必要……?

これまだ確認してなけど、直す必要があるなら直します。

Manabu Nakamura
@gakuzzzz
Apr 30 2016 10:17
あ、 型が合わないから通常の ArrowAssoc にフォールバックされるから大丈夫かな?
Kazuhiro Sera
@seratch
Apr 30 2016 10:24
Could not find an implicit value of the ParameterBinderFactory[scalikejdbc.ParameterBinder] よくわからなくなってくる
Manabu Nakamura
@gakuzzzz
Apr 30 2016 10:34
あ、 in だとやっぱりだめですね。 SEQSyntax -> 使う奴なら大丈夫そうですが
ParameterBinderFactory { _.apply }
でいけそう
Kazuhiro Sera
@seratch
Apr 30 2016 17:21
-> を書き換えるのはちょっと邪悪な気がしないでもないですね。ハマる。
Kazuhiro Sera
@seratch
Apr 30 2016 17:57
intentionally avoid using ArrowAssoc というコメントをあらゆる箇所に残しつつ、何とか対応できました。ParameterBinderFactory はほとんどの人にとって有用ですが、今後 scalikejdbc を土台として type erasure の影響を受けるようなものをつくっていると大変になりますね。そんな人あんまりいないと思いますが。