| 534 | } |
| 535 | |
| 536 | func (spq *StoragePolicyQuery) loadGroups(ctx context.Context, query *GroupQuery, nodes []*StoragePolicy, init func(*StoragePolicy), assign func(*StoragePolicy, *Group)) error { |
| 537 | fks := make([]driver.Value, 0, len(nodes)) |
| 538 | nodeids := make(map[int]*StoragePolicy) |
| 539 | for i := range nodes { |
| 540 | fks = append(fks, nodes[i].ID) |
| 541 | nodeids[nodes[i].ID] = nodes[i] |
| 542 | if init != nil { |
| 543 | init(nodes[i]) |
| 544 | } |
| 545 | } |
| 546 | if len(query.ctx.Fields) > 0 { |
| 547 | query.ctx.AppendFieldOnce(group.FieldStoragePolicyID) |
| 548 | } |
| 549 | query.Where(predicate.Group(func(s *sql.Selector) { |
| 550 | s.Where(sql.InValues(s.C(storagepolicy.GroupsColumn), fks...)) |
| 551 | })) |
| 552 | neighbors, err := query.All(ctx) |
| 553 | if err != nil { |
| 554 | return err |
| 555 | } |
| 556 | for _, n := range neighbors { |
| 557 | fk := n.StoragePolicyID |
| 558 | node, ok := nodeids[fk] |
| 559 | if !ok { |
| 560 | return fmt.Errorf(`unexpected referenced foreign-key "storage_policy_id" returned %v for node %v`, fk, n.ID) |
| 561 | } |
| 562 | assign(node, n) |
| 563 | } |
| 564 | return nil |
| 565 | } |
| 566 | func (spq *StoragePolicyQuery) loadFiles(ctx context.Context, query *FileQuery, nodes []*StoragePolicy, init func(*StoragePolicy), assign func(*StoragePolicy, *File)) error { |
| 567 | fks := make([]driver.Value, 0, len(nodes)) |
| 568 | nodeids := make(map[int]*StoragePolicy) |