MCPcopy Create free account
hub / github.com/cloudreve/cloudreve / loadNode

Method loadNode

ent/storagepolicy_query.go:626–654  ·  view source on GitHub ↗
(ctx context.Context, query *NodeQuery, nodes []*StoragePolicy, init func(*StoragePolicy), assign func(*StoragePolicy, *Node))

Source from the content-addressed store, hash-verified

624 return nil
625}
626func (spq *StoragePolicyQuery) loadNode(ctx context.Context, query *NodeQuery, nodes []*StoragePolicy, init func(*StoragePolicy), assign func(*StoragePolicy, *Node)) error {
627 ids := make([]int, 0, len(nodes))
628 nodeids := make(map[int][]*StoragePolicy)
629 for i := range nodes {
630 fk := nodes[i].NodeID
631 if _, ok := nodeids[fk]; !ok {
632 ids = append(ids, fk)
633 }
634 nodeids[fk] = append(nodeids[fk], nodes[i])
635 }
636 if len(ids) == 0 {
637 return nil
638 }
639 query.Where(node.IDIn(ids...))
640 neighbors, err := query.All(ctx)
641 if err != nil {
642 return err
643 }
644 for _, n := range neighbors {
645 nodes, ok := nodeids[n.ID]
646 if !ok {
647 return fmt.Errorf(`unexpected foreign-key "node_id" returned %v`, n.ID)
648 }
649 for i := range nodes {
650 assign(nodes[i], n)
651 }
652 }
653 return nil
654}
655
656func (spq *StoragePolicyQuery) sqlCount(ctx context.Context) (int, error) {
657 _spec := spq.querySpec()

Callers 1

sqlAllMethod · 0.95

Calls 3

IDInFunction · 0.92
WhereMethod · 0.45
AllMethod · 0.45

Tested by

no test coverage detected