Skip to content

Commit

Permalink
Merge pull request #60 from ipfs/feat/linkSubstrate
Browse files Browse the repository at this point in the history
Provide path for getting sizes on directory iteration
  • Loading branch information
willscott authored Aug 10, 2023
2 parents a1cbf13 + a049aee commit 38cb88e
Show file tree
Hide file tree
Showing 2 changed files with 69 additions and 2 deletions.
4 changes: 2 additions & 2 deletions iter/iter.go
Original file line number Diff line number Diff line change
Expand Up @@ -37,15 +37,15 @@ func (itr *UnixFSDir__MapItr) Next() (k ipld.Node, v ipld.Node, err error) {
if itr.transformName != nil {
name = itr.transformName(name)
}
return name, next.FieldHash(), nil
return name, &IterLink{next}, nil
}
nb := dagpb.Type.String.NewBuilder()
err = nb.AssignString("")
if err != nil {
return nil, nil, err
}
s := nb.Build()
return s, next.FieldHash(), nil
return s, &IterLink{next}, nil
}

func (itr *UnixFSDir__MapItr) Done() bool {
Expand Down
67 changes: 67 additions & 0 deletions iter/iterlink.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,67 @@
package iter

import (
dagpb "github.com/ipld/go-codec-dagpb"
"github.com/ipld/go-ipld-prime/datamodel"
basicnode "github.com/ipld/go-ipld-prime/node/basic"
)

type IterLink struct {
Substrate dagpb.PBLink
}

func (il *IterLink) AsBool() (bool, error) {
return false, datamodel.ErrWrongKind{}
}
func (il *IterLink) AsBytes() ([]byte, error) {
return nil, datamodel.ErrWrongKind{}
}
func (il *IterLink) AsFloat() (float64, error) {
return 0.0, datamodel.ErrWrongKind{}
}
func (il *IterLink) AsInt() (int64, error) {
return 0, datamodel.ErrWrongKind{}
}
func (il *IterLink) AsLink() (datamodel.Link, error) {
return il.Substrate.FieldHash().AsLink()
}
func (il *IterLink) AsString() (string, error) {
return "", datamodel.ErrWrongKind{}
}

func (il *IterLink) IsAbsent() bool {
return il.Substrate.IsAbsent()
}
func (il *IterLink) IsNull() bool {
return il.Substrate.IsNull()
}
func (il *IterLink) Kind() datamodel.Kind {
return datamodel.Kind_Link
}
func (il *IterLink) Length() int64 {
return 0
}
func (il *IterLink) ListIterator() datamodel.ListIterator {
return nil
}
func (il *IterLink) LookupByIndex(idx int64) (datamodel.Node, error) {
return nil, datamodel.ErrWrongKind{}
}
func (il *IterLink) LookupByNode(key datamodel.Node) (datamodel.Node, error) {
return nil, datamodel.ErrWrongKind{}
}
func (il *IterLink) LookupBySegment(seg datamodel.PathSegment) (datamodel.Node, error) {
return nil, datamodel.ErrWrongKind{}
}
func (il *IterLink) LookupByString(key string) (datamodel.Node, error) {
return nil, datamodel.ErrWrongKind{}
}
func (il *IterLink) MapIterator() datamodel.MapIterator {
return nil
}
func (il *IterLink) Prototype() datamodel.NodePrototype {
return basicnode.Prototype__Link{}
}
func (il *IterLink) Representation() datamodel.Node {
return il
}

0 comments on commit 38cb88e

Please sign in to comment.