別に意図したわけじゃないんですが、長い文章の記事しか書いてないせいで記事を書くハードルがやたら上がってしまっているので短い記事を増やしてハードルを下げようかと思います。
というわけで、最近Domaを使ったアプリのコーディングにちょっとだけ参加しているのでその辺の出来事。
例えばこういうテーブルで、
create table log( id varchar(16), status varchar(1), value text )
statusを複数種類の値でマッチするselectを書きたい場合、通常であればリストか配列を渡せば自動的にwhere inにしてくれるんだけど、nullも許容できるようにする際には当然where inにはできないので結構複雑な2WaySQLになってしまいました。
select id, status, value from log where /*%for st : statusList */ /*%if st==null */ status is null /*%if st_has_next */ or /*%end */ /*%else*/ status = /* st */'1' /*%if st_has_next */ /*# "or" */ /*%end */ /*%end */ /*%end*/
ぶっちゃけ、ドメイン設計がイケてない気がしてます。
他のソリューションとしては、