(ctx context.Context, query *StoragePolicyQuery, nodes []*Node, init func(*Node), assign func(*Node, *StoragePolicy))
| 403 | } |
| 404 | |
| 405 | func (nq *NodeQuery) loadStoragePolicy(ctx context.Context, query *StoragePolicyQuery, nodes []*Node, init func(*Node), assign func(*Node, *StoragePolicy)) error { |
| 406 | fks := make([]driver.Value, 0, len(nodes)) |
| 407 | nodeids := make(map[int]*Node) |
| 408 | for i := range nodes { |
| 409 | fks = append(fks, nodes[i].ID) |
| 410 | nodeids[nodes[i].ID] = nodes[i] |
| 411 | if init != nil { |
| 412 | init(nodes[i]) |
| 413 | } |
| 414 | } |
| 415 | if len(query.ctx.Fields) > 0 { |
| 416 | query.ctx.AppendFieldOnce(storagepolicy.FieldNodeID) |
| 417 | } |
| 418 | query.Where(predicate.StoragePolicy(func(s *sql.Selector) { |
| 419 | s.Where(sql.InValues(s.C(node.StoragePolicyColumn), fks...)) |
| 420 | })) |
| 421 | neighbors, err := query.All(ctx) |
| 422 | if err != nil { |
| 423 | return err |
| 424 | } |
| 425 | for _, n := range neighbors { |
| 426 | fk := n.NodeID |
| 427 | node, ok := nodeids[fk] |
| 428 | if !ok { |
| 429 | return fmt.Errorf(`unexpected referenced foreign-key "node_id" returned %v for node %v`, fk, n.ID) |
| 430 | } |
| 431 | assign(node, n) |
| 432 | } |
| 433 | return nil |
| 434 | } |
| 435 | |
| 436 | func (nq *NodeQuery) sqlCount(ctx context.Context) (int, error) { |
| 437 | _spec := nq.querySpec() |
no test coverage detected