セットアップ
プロジェクトの新しいGoモジュールを初期化することから始めましょう
mkdir ent-grpc-example
cd ent-grpc-example
go mod init ent-grpc-example
次に、go run
を使ってentコードジェネレータを起動し、スキーマを初期化します
go run -mod=mod entgo.io/ent/cmd/ent new User
これで私たちのディレクトリは次のようになります
.
├── ent
│ ├── generate.go
│ └── schema
│ └── user.go
├── go.mod
└── go.sum
次に、entproto
パッケージをプロジェクトに追加してみましょう
go get -u entgo.io/contrib/entproto
次に、User
エンティティのスキーマを定義します。 ent/schema/user.go
を開き、以下のように編集します
ent/schema/user.go
package schema
import (
"entgo.io/ent"
"entgo.io/ent/schema/field"
)
// User holds the schema definition for the User entity.
type User struct {
ent.Schema
}
// Fields of the User.
func (User) Fields() []ent.Field {
return []ent.Field{
field.String("name").
Unique(),
field.String("email_address").
Unique(),
}
}
このステップでは、User
エンティティに2つのユニークなフィールドを追加しました。name
とemail_address
です。 ent.Schema
はスキーマの定義にすぎません。 そこから使用可能な本番コードを作成するには、Ent のコード生成ツールを実行する必要があります。 次のコマンドを実行してみましょう:
go generate ./...
スキーマ定義から新規ファイルが作成されたことに注目してください:
├── ent
│ ├── client.go
│ ├── config.go
// .... many more
│ ├── user
│ ├── user.go
│ ├── user_create.go
│ ├── user_delete.go
│ ├── user_query.go
│ └── user_update.go
├── go.mod
└── go.sum
この時点で、データベースへの接続を開き、マイグレーションを実行してusers
テーブルを作成し、データの読み書きを開始することができます。 詳しくは、セットアップチュートリアルで説明していますので、ここからは本題に入り、スキーマからProtobuf定義とgRPCサーバーを生成する方法について説明します。