mirror of
https://github.com/ent/ent.git
synced 2026-05-24 09:31:56 +03:00
entc/gen: filter duplicate ids when loading o2m/m2o edges
This commit is contained in:
committed by
Ariel Mashraki
parent
0f7739d83b
commit
6ab0d01ea4
@@ -381,11 +381,14 @@ func (sq *StreetQuery) sqlAll(ctx context.Context) ([]*Street, error) {
|
||||
ids := make([]int, 0, len(nodes))
|
||||
nodeids := make(map[int][]*Street)
|
||||
for i := range nodes {
|
||||
fk := nodes[i].city_streets
|
||||
if fk != nil {
|
||||
ids = append(ids, *fk)
|
||||
nodeids[*fk] = append(nodeids[*fk], nodes[i])
|
||||
if nodes[i].city_streets == nil {
|
||||
continue
|
||||
}
|
||||
fk := *nodes[i].city_streets
|
||||
if _, ok := nodeids[fk]; !ok {
|
||||
ids = append(ids, fk)
|
||||
}
|
||||
nodeids[fk] = append(nodeids[fk], nodes[i])
|
||||
}
|
||||
query.Where(city.IDIn(ids...))
|
||||
neighbors, err := query.All(ctx)
|
||||
|
||||
@@ -381,11 +381,14 @@ func (pq *PetQuery) sqlAll(ctx context.Context) ([]*Pet, error) {
|
||||
ids := make([]int, 0, len(nodes))
|
||||
nodeids := make(map[int][]*Pet)
|
||||
for i := range nodes {
|
||||
fk := nodes[i].user_pets
|
||||
if fk != nil {
|
||||
ids = append(ids, *fk)
|
||||
nodeids[*fk] = append(nodeids[*fk], nodes[i])
|
||||
if nodes[i].user_pets == nil {
|
||||
continue
|
||||
}
|
||||
fk := *nodes[i].user_pets
|
||||
if _, ok := nodeids[fk]; !ok {
|
||||
ids = append(ids, fk)
|
||||
}
|
||||
nodeids[fk] = append(nodeids[fk], nodes[i])
|
||||
}
|
||||
query.Where(user.IDIn(ids...))
|
||||
neighbors, err := query.All(ctx)
|
||||
|
||||
@@ -417,11 +417,14 @@ func (nq *NodeQuery) sqlAll(ctx context.Context) ([]*Node, error) {
|
||||
ids := make([]int, 0, len(nodes))
|
||||
nodeids := make(map[int][]*Node)
|
||||
for i := range nodes {
|
||||
fk := nodes[i].node_children
|
||||
if fk != nil {
|
||||
ids = append(ids, *fk)
|
||||
nodeids[*fk] = append(nodeids[*fk], nodes[i])
|
||||
if nodes[i].node_children == nil {
|
||||
continue
|
||||
}
|
||||
fk := *nodes[i].node_children
|
||||
if _, ok := nodeids[fk]; !ok {
|
||||
ids = append(ids, fk)
|
||||
}
|
||||
nodeids[fk] = append(nodeids[fk], nodes[i])
|
||||
}
|
||||
query.Where(node.IDIn(ids...))
|
||||
neighbors, err := query.All(ctx)
|
||||
|
||||
@@ -381,11 +381,14 @@ func (cq *CardQuery) sqlAll(ctx context.Context) ([]*Card, error) {
|
||||
ids := make([]int, 0, len(nodes))
|
||||
nodeids := make(map[int][]*Card)
|
||||
for i := range nodes {
|
||||
fk := nodes[i].user_card
|
||||
if fk != nil {
|
||||
ids = append(ids, *fk)
|
||||
nodeids[*fk] = append(nodeids[*fk], nodes[i])
|
||||
if nodes[i].user_card == nil {
|
||||
continue
|
||||
}
|
||||
fk := *nodes[i].user_card
|
||||
if _, ok := nodeids[fk]; !ok {
|
||||
ids = append(ids, fk)
|
||||
}
|
||||
nodeids[fk] = append(nodeids[fk], nodes[i])
|
||||
}
|
||||
query.Where(user.IDIn(ids...))
|
||||
neighbors, err := query.All(ctx)
|
||||
|
||||
@@ -380,11 +380,14 @@ func (uq *UserQuery) sqlAll(ctx context.Context) ([]*User, error) {
|
||||
ids := make([]int, 0, len(nodes))
|
||||
nodeids := make(map[int][]*User)
|
||||
for i := range nodes {
|
||||
fk := nodes[i].user_spouse
|
||||
if fk != nil {
|
||||
ids = append(ids, *fk)
|
||||
nodeids[*fk] = append(nodeids[*fk], nodes[i])
|
||||
if nodes[i].user_spouse == nil {
|
||||
continue
|
||||
}
|
||||
fk := *nodes[i].user_spouse
|
||||
if _, ok := nodeids[fk]; !ok {
|
||||
ids = append(ids, fk)
|
||||
}
|
||||
nodeids[fk] = append(nodeids[fk], nodes[i])
|
||||
}
|
||||
query.Where(user.IDIn(ids...))
|
||||
neighbors, err := query.All(ctx)
|
||||
|
||||
@@ -417,11 +417,14 @@ func (nq *NodeQuery) sqlAll(ctx context.Context) ([]*Node, error) {
|
||||
ids := make([]int, 0, len(nodes))
|
||||
nodeids := make(map[int][]*Node)
|
||||
for i := range nodes {
|
||||
fk := nodes[i].node_next
|
||||
if fk != nil {
|
||||
ids = append(ids, *fk)
|
||||
nodeids[*fk] = append(nodeids[*fk], nodes[i])
|
||||
if nodes[i].node_next == nil {
|
||||
continue
|
||||
}
|
||||
fk := *nodes[i].node_next
|
||||
if _, ok := nodeids[fk]; !ok {
|
||||
ids = append(ids, fk)
|
||||
}
|
||||
nodeids[fk] = append(nodeids[fk], nodes[i])
|
||||
}
|
||||
query.Where(node.IDIn(ids...))
|
||||
neighbors, err := query.All(ctx)
|
||||
|
||||
@@ -425,11 +425,14 @@ func (gq *GroupQuery) sqlAll(ctx context.Context) ([]*Group, error) {
|
||||
ids := make([]int, 0, len(nodes))
|
||||
nodeids := make(map[int][]*Group)
|
||||
for i := range nodes {
|
||||
fk := nodes[i].group_tenant
|
||||
if fk != nil {
|
||||
ids = append(ids, *fk)
|
||||
nodeids[*fk] = append(nodeids[*fk], nodes[i])
|
||||
if nodes[i].group_tenant == nil {
|
||||
continue
|
||||
}
|
||||
fk := *nodes[i].group_tenant
|
||||
if _, ok := nodeids[fk]; !ok {
|
||||
ids = append(ids, fk)
|
||||
}
|
||||
nodeids[fk] = append(nodeids[fk], nodes[i])
|
||||
}
|
||||
query.Where(tenant.IDIn(ids...))
|
||||
neighbors, err := query.All(ctx)
|
||||
|
||||
@@ -425,11 +425,14 @@ func (uq *UserQuery) sqlAll(ctx context.Context) ([]*User, error) {
|
||||
ids := make([]int, 0, len(nodes))
|
||||
nodeids := make(map[int][]*User)
|
||||
for i := range nodes {
|
||||
fk := nodes[i].user_tenant
|
||||
if fk != nil {
|
||||
ids = append(ids, *fk)
|
||||
nodeids[*fk] = append(nodeids[*fk], nodes[i])
|
||||
if nodes[i].user_tenant == nil {
|
||||
continue
|
||||
}
|
||||
fk := *nodes[i].user_tenant
|
||||
if _, ok := nodeids[fk]; !ok {
|
||||
ids = append(ids, fk)
|
||||
}
|
||||
nodeids[fk] = append(nodeids[fk], nodes[i])
|
||||
}
|
||||
query.Where(tenant.IDIn(ids...))
|
||||
neighbors, err := query.All(ctx)
|
||||
|
||||
@@ -381,11 +381,14 @@ func (cq *CarQuery) sqlAll(ctx context.Context) ([]*Car, error) {
|
||||
ids := make([]int, 0, len(nodes))
|
||||
nodeids := make(map[int][]*Car)
|
||||
for i := range nodes {
|
||||
fk := nodes[i].user_cars
|
||||
if fk != nil {
|
||||
ids = append(ids, *fk)
|
||||
nodeids[*fk] = append(nodeids[*fk], nodes[i])
|
||||
if nodes[i].user_cars == nil {
|
||||
continue
|
||||
}
|
||||
fk := *nodes[i].user_cars
|
||||
if _, ok := nodeids[fk]; !ok {
|
||||
ids = append(ids, fk)
|
||||
}
|
||||
nodeids[fk] = append(nodeids[fk], nodes[i])
|
||||
}
|
||||
query.Where(user.IDIn(ids...))
|
||||
neighbors, err := query.All(ctx)
|
||||
|
||||
@@ -482,11 +482,14 @@ func (gq *GroupQuery) sqlAll(ctx context.Context) ([]*Group, error) {
|
||||
ids := make([]int, 0, len(nodes))
|
||||
nodeids := make(map[int][]*Group)
|
||||
for i := range nodes {
|
||||
fk := nodes[i].group_admin
|
||||
if fk != nil {
|
||||
ids = append(ids, *fk)
|
||||
nodeids[*fk] = append(nodeids[*fk], nodes[i])
|
||||
if nodes[i].group_admin == nil {
|
||||
continue
|
||||
}
|
||||
fk := *nodes[i].group_admin
|
||||
if _, ok := nodeids[fk]; !ok {
|
||||
ids = append(ids, fk)
|
||||
}
|
||||
nodeids[fk] = append(nodeids[fk], nodes[i])
|
||||
}
|
||||
query.Where(user.IDIn(ids...))
|
||||
neighbors, err := query.All(ctx)
|
||||
|
||||
@@ -482,11 +482,14 @@ func (pq *PetQuery) sqlAll(ctx context.Context) ([]*Pet, error) {
|
||||
ids := make([]int, 0, len(nodes))
|
||||
nodeids := make(map[int][]*Pet)
|
||||
for i := range nodes {
|
||||
fk := nodes[i].user_pets
|
||||
if fk != nil {
|
||||
ids = append(ids, *fk)
|
||||
nodeids[*fk] = append(nodeids[*fk], nodes[i])
|
||||
if nodes[i].user_pets == nil {
|
||||
continue
|
||||
}
|
||||
fk := *nodes[i].user_pets
|
||||
if _, ok := nodeids[fk]; !ok {
|
||||
ids = append(ids, fk)
|
||||
}
|
||||
nodeids[fk] = append(nodeids[fk], nodes[i])
|
||||
}
|
||||
query.Where(user.IDIn(ids...))
|
||||
neighbors, err := query.All(ctx)
|
||||
|
||||
Reference in New Issue
Block a user