PostgreSQL と ORM と Logging について語る会
「PostgreSQL と ORM と Logging」サポートページです。感想やら質問やら間違いの指摘やら,お気軽にコメントしてください。
実はこの本とは別件で
という issue を上げていたのだが mermaid 側の動きが芳しくなく Zenn 側で調整を行ったようだ(感謝!)。この影響かどうか分からないが(たぶん違うと思うが)
graph LR
User((User<From>)) -- Edge<owned> --> BinaryFile((BinaryFile<To>))
BinaryFile -- Edge<owner> --> User
という記述が
になってしまった。 < ... >
の部分がまるっと抜け落ちてしまう。というわけで,この部分をちょっと書き換えて
graph LR
User((From#User)) -- owned --> BinaryFile((To#BinaryFile))
BinaryFile -- owner --> User
とした。これで
という表示になる。ふむむ。 mermaid は難しい。
もしかしたら付録として収録するかも知れないけど github.com/smallnest/gen パッケージに関する話。
smallnest/gen では RDBMS に登録済みのスキーマ定義から GORM 用のモデル構造体を吐いてくれる便利 CLI ツールで, GitHub 上でコードのみ公開されている。内部で cgo を要求するパッケージ(多分 github.com/mattn/go-sqlite3)があるせいだと思う。特に Windows では別途 GCC ツールチェーンが必要となる。
最初 Scoop で導入しようとしたが
$ scoop install gcc
Installing 'gcc' (9.3.0-2) [64bit]
mingw-w64-x86_64-binutils-2.34-1-any.pkg.tar.xz (13.9 MB) [===================================================] 100%
Checking hash of mingw-w64-x86_64-binutils-2.34-1-any.pkg.tar.xz ... ok.
mingw-w64-x86_64-crt-git-8.0.0.5815.9517d302-1-any.pkg.tar.xz (3.1 MB) [======================================] 100%
Checking hash of mingw-w64-x86_64-crt-git-8.0.0.5815.9517d302-1-any.pkg.tar.xz ... ok.
The remote server returned an error: (404) Not Found.
URL http://repo.msys2.org/mingw/x86_64/mingw-w64-x86_64-expat-2.2.9-1-any.pkg.tar.xz is not valid
という感じに途中でエラーになってしまった。しょうがないので自分の過去記事を参考にインストーラをダウンロードして手動でインストールした。
何でも書いておくものである(笑)
って 8.1.0 が最新かよ orz
あと smallnest/gen は内部で diff コマンドを呼び出すらしい。これも Winsows 環境にはないので別途インストールする必要がある(ググっても Windows なら fc コマンドで代替できるとか GUI ツールがお勧めとしか出てこないがw)。 Scoop なら diffutils をインストールすればよい。
ビルド&インストールは Go 1.17 以降なら
$ go install github.com/smallnest/gen@latest
でOKだが,バージョンタグがついている v0.9.27 は2020年8月にリリースされたもので,これをそのまま使うと PostgreSQL の bytea 型を sql.NullString に変換という恐ろしい挙動をする。これを回避するには mapping.json を手直ししてコマンドラインで指定するか,上の go install を使わずに git clone で最新コミットを取ってきて go build でビルドするのがいいだろう。
他にも --run-gofmt
オプションを付けないと lint で warning 出まくりのコードになるとか,雛形の BeforeSave() メソッドの引数が何故か脱落してしまい実行時に GORM に怒られるとか,色々あって一筋縄ではいかない感じである。
付録を2節ほど追加した。
Kra についてはこの本で言及したかったので,ようやく肩の荷が下りた。これで今年の個人活動は終わり(笑)
ElephantSQL は 2024-05-01 以降は新規ユーザの受け入れを停止し 2025-01-27 (現地時間) を以ってサービスを終了するとのこと。
新しい遊び場を探さなきゃ...