

大瀧
2024.01.04
1012
この記事では、Go言語のフレームワークであるentにコマンド一つでスキーマファイルからER図を生成してくれるツールが追加されたことについて紹介します。
Entのスキーマファイルを元に生成したER図のリンクは以下のコマンドで作成できます。
$ go run -mod=mod ariga.io/entviz ./path/to/ent/schema
go mod init で確認用プロジェクトを初期化します。
$ go mod init github.com/rotemtam/ent-blog-example新しいプロジェクトが作成されたことを確認します。
go: creating new go.mod: module github.com/rotemtam/ent-blog-exampleEntを使用してアプリケーション・データ・モデルを作成するため、go get を使って取得しましょう。
$ go get -u entgo.io/ent@masterEnt CLI を使用して、このチュートリアルで扱う2種類のエンティティ(UserとPost)のモデルを初期化します。
$ go run -mod=mod entgo.io/ent/cmd/ent new User Post./ent/schema 配下にあるpost.go と user.go にそれぞれ以下を追記します。
user.go
// Fields of the User.  
func (User) Fields() []ent.Field {  
  return []ent.Field{  
   field.String("name"),  
   field.String("email").
      Unique(),  
   field.Time("created_at").
      Default(time.Now),  
  }  
}  
  
// Edges of the User.  
func (User) Edges() []ent.Edge {  
  return []ent.Edge{  
   edge.To("posts", Post.Type),  
  }  
}post.go
// Fields of the Post.  
func (Post) Fields() []ent.Field {  
   return []ent.Field{  
      field.String("title"),  
      field.Text("body"),  
      field.Time("created_at").
            Default(time.Now),  
   }  
}  
  
// Edges of the Post.
func (Post) Edges() []ent.Edge {  
   return []ent.Edge{  
      edge.From("author", User.Type).  
         Unique().  
         Ref("posts"),  
   }  
}以下のコマンドを実行し、ER図のリンクを生成してブラウザで確認します。
$ go run -mod=mod ariga.io/entviz ./ent/schema以下のようなページが開ければ完了です。

schemaファイルさえ書いていればコマンド一つでER図が生成できるので非常に便利な機能でした。
Entはコンスタントにこういった便利な機能のアップデートが行われているので、これからも定期的にリリースノートをチェックして追っていきたいと思います。

3,760

大瀧
2024.02.10

708

タム
2023.05.26