安装与配置
让我们首先为项目初始化一个新的 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 保存着 User 实体的模式定义
type User struct {
ent.Schema
}
// User 的字段定义
func (User) Fields() []ent.Field {
return []ent.Field{
field.String("name").
Unique(),
field.String("email_address").
Unique(),
}
}
在此步骤中,我们为 User 实体添加了两个唯一字段:name 和 email_address。ent.Schema 只是模式的定义。要从中创建可用的生产代码,我们需要在其上运行 Ent 的代码生成工具。运行:
go generate ./...
注意,根据模式定义已生成新文件:
├── ent
│ ├── client.go
│ ├── config.go
// .... 更多文件
│ ├── user
│ ├── user.go
│ ├── user_create.go
│ ├── user_delete.go
│ ├── user_query.go
│ └── user_update.go
├── go.mod
└── go.sum
此时,我们可以连接数据库、运行迁移创建 users 表并开始读写数据。这部分内容在设置教程中已有详细说明,现在让我们直接切入重点,学习如何从模式生成 Protobuf 定义和 gRPC 服务器。