| 446 | } |
| 447 | |
| 448 | func (gq *GroupQuery) loadUsers(ctx context.Context, query *UserQuery, nodes []*Group, init func(*Group), assign func(*Group, *User)) error { |
| 449 | fks := make([]driver.Value, 0, len(nodes)) |
| 450 | nodeids := make(map[int]*Group) |
| 451 | for i := range nodes { |
| 452 | fks = append(fks, nodes[i].ID) |
| 453 | nodeids[nodes[i].ID] = nodes[i] |
| 454 | if init != nil { |
| 455 | init(nodes[i]) |
| 456 | } |
| 457 | } |
| 458 | if len(query.ctx.Fields) > 0 { |
| 459 | query.ctx.AppendFieldOnce(user.FieldGroupUsers) |
| 460 | } |
| 461 | query.Where(predicate.User(func(s *sql.Selector) { |
| 462 | s.Where(sql.InValues(s.C(group.UsersColumn), fks...)) |
| 463 | })) |
| 464 | neighbors, err := query.All(ctx) |
| 465 | if err != nil { |
| 466 | return err |
| 467 | } |
| 468 | for _, n := range neighbors { |
| 469 | fk := n.GroupUsers |
| 470 | node, ok := nodeids[fk] |
| 471 | if !ok { |
| 472 | return fmt.Errorf(`unexpected referenced foreign-key "group_users" returned %v for node %v`, fk, n.ID) |
| 473 | } |
| 474 | assign(node, n) |
| 475 | } |
| 476 | return nil |
| 477 | } |
| 478 | func (gq *GroupQuery) loadStoragePolicies(ctx context.Context, query *StoragePolicyQuery, nodes []*Group, init func(*Group), assign func(*Group, *StoragePolicy)) error { |
| 479 | ids := make([]int, 0, len(nodes)) |
| 480 | nodeids := make(map[int][]*Group) |