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

Method loadMetadata

ent/file_query.go:825–854  ·  view source on GitHub ↗
(ctx context.Context, query *MetadataQuery, nodes []*File, init func(*File), assign func(*File, *Metadata))

Source from the content-addressed store, hash-verified

823 return nil
824}
825func (fq *FileQuery) loadMetadata(ctx context.Context, query *MetadataQuery, nodes []*File, init func(*File), assign func(*File, *Metadata)) error {
826 fks := make([]driver.Value, 0, len(nodes))
827 nodeids := make(map[int]*File)
828 for i := range nodes {
829 fks = append(fks, nodes[i].ID)
830 nodeids[nodes[i].ID] = nodes[i]
831 if init != nil {
832 init(nodes[i])
833 }
834 }
835 if len(query.ctx.Fields) > 0 {
836 query.ctx.AppendFieldOnce(metadata.FieldFileID)
837 }
838 query.Where(predicate.Metadata(func(s *sql.Selector) {
839 s.Where(sql.InValues(s.C(file.MetadataColumn), fks...))
840 }))
841 neighbors, err := query.All(ctx)
842 if err != nil {
843 return err
844 }
845 for _, n := range neighbors {
846 fk := n.FileID
847 node, ok := nodeids[fk]
848 if !ok {
849 return fmt.Errorf(`unexpected referenced foreign-key "file_id" returned %v for node %v`, fk, n.ID)
850 }
851 assign(node, n)
852 }
853 return nil
854}
855func (fq *FileQuery) loadEntities(ctx context.Context, query *EntityQuery, nodes []*File, init func(*File), assign func(*File, *Entity)) error {
856 edgeIDs := make([]driver.Value, len(nodes))
857 byID := make(map[int]*File)

Callers 1

sqlAllMethod · 0.95

Calls 4

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

Tested by

no test coverage detected