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

Method loadDirectLinks

ent/file_query.go:947–976  ·  view source on GitHub ↗
(ctx context.Context, query *DirectLinkQuery, nodes []*File, init func(*File), assign func(*File, *DirectLink))

Source from the content-addressed store, hash-verified

945 return nil
946}
947func (fq *FileQuery) loadDirectLinks(ctx context.Context, query *DirectLinkQuery, nodes []*File, init func(*File), assign func(*File, *DirectLink)) error {
948 fks := make([]driver.Value, 0, len(nodes))
949 nodeids := make(map[int]*File)
950 for i := range nodes {
951 fks = append(fks, nodes[i].ID)
952 nodeids[nodes[i].ID] = nodes[i]
953 if init != nil {
954 init(nodes[i])
955 }
956 }
957 if len(query.ctx.Fields) > 0 {
958 query.ctx.AppendFieldOnce(directlink.FieldFileID)
959 }
960 query.Where(predicate.DirectLink(func(s *sql.Selector) {
961 s.Where(sql.InValues(s.C(file.DirectLinksColumn), fks...))
962 }))
963 neighbors, err := query.All(ctx)
964 if err != nil {
965 return err
966 }
967 for _, n := range neighbors {
968 fk := n.FileID
969 node, ok := nodeids[fk]
970 if !ok {
971 return fmt.Errorf(`unexpected referenced foreign-key "file_id" returned %v for node %v`, fk, n.ID)
972 }
973 assign(node, n)
974 }
975 return nil
976}
977
978func (fq *FileQuery) sqlCount(ctx context.Context) (int, error) {
979 _spec := fq.querySpec()

Callers 1

sqlAllMethod · 0.95

Calls 4

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

Tested by

no test coverage detected