Skip to content

Commit 38cb88e

Browse files
authored
Merge pull request #60 from ipfs/feat/linkSubstrate
Provide path for getting sizes on directory iteration
2 parents a1cbf13 + a049aee commit 38cb88e

File tree

2 files changed

+69
-2
lines changed

2 files changed

+69
-2
lines changed

iter/iter.go

+2-2
Original file line numberDiff line numberDiff line change
@@ -37,15 +37,15 @@ func (itr *UnixFSDir__MapItr) Next() (k ipld.Node, v ipld.Node, err error) {
3737
if itr.transformName != nil {
3838
name = itr.transformName(name)
3939
}
40-
return name, next.FieldHash(), nil
40+
return name, &IterLink{next}, nil
4141
}
4242
nb := dagpb.Type.String.NewBuilder()
4343
err = nb.AssignString("")
4444
if err != nil {
4545
return nil, nil, err
4646
}
4747
s := nb.Build()
48-
return s, next.FieldHash(), nil
48+
return s, &IterLink{next}, nil
4949
}
5050

5151
func (itr *UnixFSDir__MapItr) Done() bool {

iter/iterlink.go

+67
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,67 @@
1+
package iter
2+
3+
import (
4+
dagpb "github.com/ipld/go-codec-dagpb"
5+
"github.com/ipld/go-ipld-prime/datamodel"
6+
basicnode "github.com/ipld/go-ipld-prime/node/basic"
7+
)
8+
9+
type IterLink struct {
10+
Substrate dagpb.PBLink
11+
}
12+
13+
func (il *IterLink) AsBool() (bool, error) {
14+
return false, datamodel.ErrWrongKind{}
15+
}
16+
func (il *IterLink) AsBytes() ([]byte, error) {
17+
return nil, datamodel.ErrWrongKind{}
18+
}
19+
func (il *IterLink) AsFloat() (float64, error) {
20+
return 0.0, datamodel.ErrWrongKind{}
21+
}
22+
func (il *IterLink) AsInt() (int64, error) {
23+
return 0, datamodel.ErrWrongKind{}
24+
}
25+
func (il *IterLink) AsLink() (datamodel.Link, error) {
26+
return il.Substrate.FieldHash().AsLink()
27+
}
28+
func (il *IterLink) AsString() (string, error) {
29+
return "", datamodel.ErrWrongKind{}
30+
}
31+
32+
func (il *IterLink) IsAbsent() bool {
33+
return il.Substrate.IsAbsent()
34+
}
35+
func (il *IterLink) IsNull() bool {
36+
return il.Substrate.IsNull()
37+
}
38+
func (il *IterLink) Kind() datamodel.Kind {
39+
return datamodel.Kind_Link
40+
}
41+
func (il *IterLink) Length() int64 {
42+
return 0
43+
}
44+
func (il *IterLink) ListIterator() datamodel.ListIterator {
45+
return nil
46+
}
47+
func (il *IterLink) LookupByIndex(idx int64) (datamodel.Node, error) {
48+
return nil, datamodel.ErrWrongKind{}
49+
}
50+
func (il *IterLink) LookupByNode(key datamodel.Node) (datamodel.Node, error) {
51+
return nil, datamodel.ErrWrongKind{}
52+
}
53+
func (il *IterLink) LookupBySegment(seg datamodel.PathSegment) (datamodel.Node, error) {
54+
return nil, datamodel.ErrWrongKind{}
55+
}
56+
func (il *IterLink) LookupByString(key string) (datamodel.Node, error) {
57+
return nil, datamodel.ErrWrongKind{}
58+
}
59+
func (il *IterLink) MapIterator() datamodel.MapIterator {
60+
return nil
61+
}
62+
func (il *IterLink) Prototype() datamodel.NodePrototype {
63+
return basicnode.Prototype__Link{}
64+
}
65+
func (il *IterLink) Representation() datamodel.Node {
66+
return il
67+
}

0 commit comments

Comments
 (0)