| 754 | } |
| 755 | |
| 756 | func (uq *UserQuery) loadGroup(ctx context.Context, query *GroupQuery, nodes []*User, init func(*User), assign func(*User, *Group)) error { |
| 757 | ids := make([]int, 0, len(nodes)) |
| 758 | nodeids := make(map[int][]*User) |
| 759 | for i := range nodes { |
| 760 | fk := nodes[i].GroupUsers |
| 761 | if _, ok := nodeids[fk]; !ok { |
| 762 | ids = append(ids, fk) |
| 763 | } |
| 764 | nodeids[fk] = append(nodeids[fk], nodes[i]) |
| 765 | } |
| 766 | if len(ids) == 0 { |
| 767 | return nil |
| 768 | } |
| 769 | query.Where(group.IDIn(ids...)) |
| 770 | neighbors, err := query.All(ctx) |
| 771 | if err != nil { |
| 772 | return err |
| 773 | } |
| 774 | for _, n := range neighbors { |
| 775 | nodes, ok := nodeids[n.ID] |
| 776 | if !ok { |
| 777 | return fmt.Errorf(`unexpected foreign-key "group_users" returned %v`, n.ID) |
| 778 | } |
| 779 | for i := range nodes { |
| 780 | assign(nodes[i], n) |
| 781 | } |
| 782 | } |
| 783 | return nil |
| 784 | } |
| 785 | func (uq *UserQuery) loadFiles(ctx context.Context, query *FileQuery, nodes []*User, init func(*User), assign func(*User, *File)) error { |
| 786 | fks := make([]driver.Value, 0, len(nodes)) |
| 787 | nodeids := make(map[int]*User) |