Where communities thrive


  • Join over 1.5M+ people
  • Join over 100K+ communities
  • Free without limits
  • Create your own community
People
Activity
    Toshiyuki Takahashi
    @tototoshi
    みたいな
    Toshiyuki Takahashi
    @tototoshi
    sqls"id" みたいなことやれば一応できた。けれど...
    Toshiyuki Takahashi
    @tototoshi
    scalikejdbc/scalikejdbc#571 すでにissueに上がってた
    kenji yoshida
    @xuwei-k
    scalikejdbcでやるとして、MySQLでは簡単に出来ても、DBの実装毎になんか変えないとうまくいかなかったような気もする?(うろ覚え
    Kazuhiro Sera
    @seratch
    default off で、今までと挙動かえないようにして、設定切り替えたら一律 backquote つきになる、みたいな仕様なら導入しやすいなと思っています。私がやるのはちょっとすぐには無理かも。
    Toshiyuki Takahashi
    @tototoshi
    default offにして、の方針でちょっとコードいじったりしてみてました。うまくいったらプルリクします。
    Toshiyuki Takahashi
    @tototoshi
    scalikejdbc/scalikejdbc@25c41b4 もうちょっとスマートにならないかな...
    Toshiyuki Takahashi
    @tototoshi
    (まだがんばってる)scalikejdbcのSQLSyntaxのコードを最初に整理した方良さそうな気がしてきた。
    harry
    @harry0000
    1点お聞きしたいのですが、skinny-ormでEntityを指定してcreateって出来ますか?ソースコード等を確認した限りでは出来なさそうな気がしました。
    Kazuhiro Sera
    @seratch
    skinny-ormでEntityを指定してcreateって出来ますか
    @harry0000 今のところできないですね。insert 時未設定の auto increment な PK 問題などもあり。 NewEntity みたいなのを別で用意して field を macro でどうにかするとかは考えられますが、ライブラリの機能としては今はないです。
    harry
    @harry0000
    問題点など理解できました。ご回答ありがとうございます!
    katainaka
    @katainaka0503
    ScalikeJDBCのドキュメントを見ると.one.toOptionalOne.map()としたときにmapが受け取る関数の2番めの引数はOption[Hoge]となっているのですが、実際はOptionに包まれてない型の値が渡されてきます。これを修正するPRを送ってもよいですか?
    参照したドキュメントはこちらです(http://scalikejdbc.org/documentation/one-to-x.html)
    katainaka
    @katainaka0503
    Contributors' Guideを読んだのですが互換性がなくなってしまうのでダメだと自己解決しました。
    失礼いたしました。
    Shohei Kamimori
    @jyane
    OneToOneSQL の map の引数の型は場合によって異なるように見えましたが、違うでしょうか。
    kenji yoshida
    @xuwei-k
    もし正当な理由ある変更なら、必ずしも互換壊すのがダメなわけでも
    kenji yoshida
    @xuwei-k
    @katainaka0503 もしくは、もしドキュメントのコード例が現状の最新版の3.1.0でコンパイル通らないなら、ドキュメントか本体かわからないけど、どちらかのバグではあるので、issue報告かpull reqお願いします
    katainaka
    @katainaka0503
    @xuwei-k 了解いたしました
    kenji yoshida
    @xuwei-k
    toOptionalOneがどういうAPIなのかよく知らない(たぶん個人的に使ったことない) が、本体側Optionでくくるだけじゃ意味が謎( = 必ずSomeになる?) だから、
    ドキュメントのサンプルコードの方を直すべき案件なのだろうか?それともOptionにしたところは、現状ではnullが渡ってくるパターンがある、みたいな話?(まぁ @seratch さんとかに任せよう)
    katainaka
    @katainaka0503
    必ずSomeになるのでおそらくSomeでくくったほうがいいですね・・・一応修正します。
    kenji yoshida
    @xuwei-k
    いや、必ずSomeになるなら、Optionで受け取る嬉しさがない(?)から、もしそうなら実装そのままでドキュメントのほう直すべきなのかな?と思ったんですが。 mapがoverrideされてるか何かで、Someの場合もNoneの場合もありえる、なら話は別ですが
    もしくは他のAPIとの整合性とか他の要因がなにかあるとか・・・?(それは考えすぎな気がしなくもない)
    katainaka
    @katainaka0503
    すみません、発言の意図を間違って捉えていました。
    katainaka
    @katainaka0503
    自分が必ずSomeになると発言したのは自分が送ったPRの中でtoOptionalOneの実装において引数として受け取るto: WrappedResultSet => Option[B]の戻り値にOptionをかぶせているところについての発言でした。
    kenji yoshida
    @xuwei-k
    ん、なんか話が噛み合ってるような、噛み合ってないような…。同じことの繰り返しになるけど、そのOptionをかぶせたのって、ドキュメントと実装合わせる以外にどういう嬉しさがあるんですか?
    それとも “実装は変えずに使う側でSomeでくくったほうがいい” と、思い直した、という意味?
    Shohei Kamimori
    @jyane
    map の引数の型が Option でないなら、copy(owner = Some(owner)) にすれば良い、ということにはならず、toOptionalOne の実装を変えたほうがメリットがあるということ(?)
    katainaka
    @katainaka0503
    toOptionalOne()は.one(A(a)).toOptionalOne(B(b)).map().list().apply()というように使用するのですが、現在の実装ではapplyで値を取り出すときに、toOptinalOneの引数の関数がNoneを返す時は、map()の引数の関数の戻り値の型にoneの引数の関数の戻り値をキャストするという実装になっています。
    これはmapの引数の関数が(a, b) => a.copy(b = Some(b))というような形式のときには同じ型であるため問題になりませんが、
    もっと一般の関数を渡すと実行時例外に遭遇することになります。
    katainaka
    @katainaka0503
    これはtoOneと同じ実装を使っているためで、toOneの戻り値にnullが帰ってきた際もmapの引数が同様の条件を満たす際には同様の実行時例外が発生します。
    toOneの戻り値にnullが帰ってくるような実装をしているときに実行時例外が発生してしまうというのは許容できる気がするのですが、
    outer joinをする相手の存在の有無をOptionで表すtoOptionalOneで指定する対象が存在せずtoOptionalOneの引数の関数がNoneを返す際にそのような例外が発生するのは危険だなと思い、また、ドキュメントのとおりにmapにOptionが渡されてくるようなAPIにしてそのようなことが起こらないようにすべきではと思ってのPRでした。
    katainaka
    @katainaka0503
    toOneの戻り値に→toOneの引数の関数の戻り値にですねすみません
    Shohei Kamimori
    @jyane
    わかった気がしました。現状のテストでも outer join したときに column が null になるようなテストケースがないのか(?)
    ありがとうございます :bow:
    katainaka
    @katainaka0503
    いや、その outer join したときに column が nullになるケースはあって、mapに入る関数が(a, b) => a.copy(b = Some(b))のケースしか無いため、mapの引数の関数を使わずに代わりにキャストによってなんとかする実装でどうにかなってるケースしか無いのが問題そうです。じゃあPRでそのテスト足せよという話ですねすみません・・・
    Shohei Kamimori
    @jyane
    あ、僕は吉田さんとは違ってメンバーではないので :bow:
    kenji yoshida
    @xuwei-k
    なるほど、そういうことならテスト足してもらった方がよさそうですね
    Kazuhiro Sera
    @seratch
    いまさらここ見ました。コメントした通りです。
    tanaka takaya
    @takayahilton
    @seratch すみません scalikejdbc/scalikejdbc#1017 ですがfutureReadOnlyみたいなメソッドを愚直に生やしたくないなと思ってこうしたんですが何か他に良い実装方法とかあるでしょうか?