メインコンテンツへスキップする

セットアップ

プロジェクトの新しい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 init User

これで私たちのディレクトリは次のようになります

.
├── ent
│ ├── generate.go
│ └── schema
│ └── user.go
├── go.mod
└── go.sum

次に、entprotoパッケージをプロジェクトに追加してみましょう

go get -u entgo.io/contrib/entproto

次に、Userエンティティのスキーマを定義します。 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つのユニークなフィールドを追加しました。nameemail_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サーバーを生成する方法について説明します。