Entities
1) User
2) Post
Relationship
- One user can have many groups
- One group can have many users
Steps
1) Generate user and post
go run -mod=mod entgo.io/ent/cmd/ent new User
go run -mod=mod entgo.io/ent/cmd/ent new Group
2) Connect user with group
func (User) Edges() []ent.Edge {
return []ent.Edge{
edge.To("groups", Group.Type),
}
}
3) Connect group with user
func (Group) Edges() []ent.Edge {
return []ent.Edge{
edge.From("users", User.Type).Ref("groups"),
}
}
4) Try to create user and groups
func CreateUser(client *ent.Client, ctx context.Context) {
// Create groups
g1, _ := client.Group.Create().SetName("Group 1").Save(ctx)
g2, _ := client.Group.Create().SetName("Group 2").Save(ctx)
// Create user
u, _ := client.User.Create().SetName("PP").AddGroups(g1, g2).Save(ctx)
}
5) Get user with groups
func CreateUser(client *ent.Client, ctx context.Context) {
...
userWithGroups, _ := client.User.Query().WithGroups().Where(user.NameEQ("PP")).First(ctx)
log.Println("user with groups", userWithGroups.Edges.Groups)
}