MCPcopy
hub / github.com/cloudreve/cloudreve / loadStoragePolicy

Method loadStoragePolicy

ent/node_query.go:405–434  ·  view source on GitHub ↗
(ctx context.Context, query *StoragePolicyQuery, nodes []*Node, init func(*Node), assign func(*Node, *StoragePolicy))

Source from the content-addressed store, hash-verified

403}
404
405func (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
436func (nq *NodeQuery) sqlCount(ctx context.Context) (int, error) {
437 _spec := nq.querySpec()

Callers 1

sqlAllMethod · 0.95

Calls 4

WhereMethod · 0.95
StoragePolicyFuncType · 0.92
initFunction · 0.50
AllMethod · 0.45

Tested by

no test coverage detected