DBIx::Skinnyの動的なSQL生成の挙動を調べるREPL

そもそも悩むくらいならsearch_namedでいいんじゃね?という話はありますが、動的生成するようにしておく方が便利ということもまぁまぁあったりします。

あと、なんだかんだでsearchは便利なのでよく使うんですが、細かいところでどう書くんだったけなー、というのを忘れることがあります。

そういうのを簡単に調べられるREPLを書きました。 evalでやってたり色々手抜き気味ですが。

動作イメージはこんな感じ。

>>> $rs->from(["example"])
SQL:

FROM example

Binds:                                                                                                                                                                                                    >>>                
                                                                                                                                                                                                          >>> $rs->add_complex_where([["OR", { foo => "bar" }, { bar => "baz" }]]);                       
SQL:

FROM example
WHERE ((foo = ?) OR (bar = ?))

Binds: bar, baz                                                                                                                                                                                           >>> $rs->select(["*"])
SQL:

SELECT *
FROM example
WHERE ((foo = ?) OR (bar = ?))

Binds: bar, baz   
>>> $rs->from(["example"])
SQL:

FROM example

Binds
# リセットする
>>> $rs = undef
>>> $rs->from(["example2"])
SQL:

FROM example2

Binds:

コードはこんな感じです。

http://gist.github.com/413313