タグ

ブックマーク / ktat.hatenadiary.jp (2)

  • SQLを組み立てるもの - Practice of Programming

    最近、Tengを使っていますが、それほど複雑でもないSQLを組み立てるのに、searchメソッドは使いにくいと思う時が割と多い(group by出来ないとか、x = ? or y = ? とか書きにくいとか)。たぶん、方針として、シンプルなSQL以外は、search_by_sqlをっていうことなのだろうと思います。 ですが、SQLを文字列として組み立てるのは、割とめんどくさいので、SQLを組み立てるモジュールを使って、search_by_sqlに渡しています。 O/Rマッパーで、SQLのクエリを組み立てるものが組み込まれてますが、Tengで使われているのは、SQL::Maker、DBIx::Classだと、SQL::Abstract。Tengのsearchメソッドでは、SQL::Makerのselect メソッドを使っていますので、出来ることは、selectメソッドに出来ることに限られます

    SQLを組み立てるもの - Practice of Programming
  • Practice of Programming

    前回(というか、今朝)、goquというGoSQLのクエリビルダーを紹介しましたが、カラム名をハードコーディングするので、カラムに変更があると、どこに書かれてるのか探すのが大変ですね。grep、目grepで対応して、見えないバグが仕込まれるかもしれません。 そして、人(僕)はよくtypoする。 なので、information_schemaから、カラム名やテーブル名を取得してコード生成してしまえば良いのではと考えました。 Before, After 実際どんなイメージになるかというと。 Before: ex = goqu.Or( goqu.And( goqu.C("first_name").Eq(firstName), goqu.C("age").Lt(20), ), goqu.And{ goqu.C("first_name").Eq(firstName), goqu.C("age").Gt

    Practice of Programming
  • 1