ORM
Golang ORMs を読んで golang での ORM パッケージを選定、検討してた。この資料では ORM ライブラリとしての比較項目がリストアップされていて、また各ライブラリの特徴としてサンプルコードも添えてくれていて、とても助かるまとめになっていた。
その中から絞り込んだのが、
の2つ。開発がアクティブで機能的にも良さ気だった。
最終的に (twitter タイムラインでもよく言及されていた) gorm に決めた。
2014/08/05追加 → boolian の扱いがよく分からなくて gorp にするかも…
ちなみにスライド最後の 全体観 には、
Overall notes
- No lazy loading
とありました。
マイグレーション
マイグレーション機能が付いているものもあったが、単独でもパッケージになっているものがあるもよう。
バリデーション
フォームなどでデータバリデーションはどうするんだという話題については、
[go-nuts] How do you handle data validation? - Grokbase
というページが見つかり、
I usually have a HTTP API serving JSON and I do validation through JSON Schemas.
とのレスがあった。
golangに限ったの話題ではないが、 JSON Schema について調べる。
少し調べて出てきた疑問が「パスワード入力フィールドで、確認用入力フィールドとのマッチングはどうやるのか」というものだった。
JSON Schema - Advanced Example
を読むと、
we use patternProperties to match other property names via a regular expression (note that it does not match /);
と書いてあって、
{ "$schema": "http://json-schema.org/draft-04/schema#", "type": "object", "properties": { "/": {} }, "patternProperties": { "^(/[^/]+)+$": {} }, "additionalProperties": false, "required": [ "/" ] }
この中の、
"patternProperties": { "^(/[^/]+)+$": {} },
上記部分がポイントなのかな。