📖
entでのDBマイグレーション
https://entgo.io/ja/blog/2022/03/14/announcing-versioned-migrations を読んでみた。
概要
entでも従来のALTER TABLEを記載したマイグレーションファイルを管理するやり方ができるようになった、とのこと
前提
RDBMSを使っている場合に、テーブル定義を変更する場合のALTER TABLE文をバージョン管理することが多い
例えば以下は https://github.com/pressly/goose の例
20180102050000_alter_event_log_email.sql
-- +goose Up
-- SQL in section 'Up' is executed when this migration is applied
ALTER TABLE event_log_email MODIFY COLUMN
event ENUM('click', 'delivered', 'open', 'deferred', 'dropped', 'bounce', 'block') NOT NULL;
-- seed
UPDATE event_log_email SET event = 'dropped' WHERE event = '';
-- +goose Down
-- SQL section 'Down' is executed when this migration is rolled back
ALTER TABLE event_log_email MODIFY COLUMN
event ENUM('click', 'delivered', 'open', 'deferred', 'drop', 'bounce', 'block') NOT NULL;
entでのスキーマ管理
https://entgo.io/ja/blog/2022/03/14/announcing-versioned-migrations#generating-versioned-migration-files にあるように、Goのコードでスキーマ定義を管理する。
余談
entではAtlasというマイグレーションエンジンを内部的に使っているらしい。このAtlasはHCLを使ってテーブル定義をTerraformのように定義できる。
Discussion