设置
让我们为项目初始化一个新的 Go 语言模块:
mkdir ent-grpc-example
cd ent-grpc-example
go mod init ent-grpc-example
下一步使用 go run 触发代码生成器来初始化模式:
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 实体添加两个唯一的字段: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 服务器。