M api/graph/model/tree.go => api/graph/model/tree.go +14 -28
@@ 40,7 40,20 @@ func (ent *TreeEntry) Object() Object {
return obj
}
-func (tree *Tree) Entries(count *int, next *string) []*TreeEntry {
+func (tree *Tree) Entry(path string) *TreeEntry {
+ ent, err := tree.tree.FindEntry(path)
+ if err == object.ErrEntryNotFound {
+ return nil
+ }
+ return &TreeEntry{
+ Name: ent.Name,
+ Mode: int(ent.Mode),
+ hash: ent.Hash,
+ repo: tree.repo,
+ }
+}
+
+func (tree *Tree) Entries() []*TreeEntry {
entries := tree.tree.Entries[:]
sort.SliceStable(entries, func(a, b int) bool {
return entries[a].Name < entries[b].Name
@@ 56,36 69,9 @@ func (tree *Tree) Entries(count *int, next *string) []*TreeEntry {
}
}
- if next != nil {
- for i, ent := range qlents {
- if ent.Name == *next {
- qlents = qlents[i+1:]
- if len(entries) > *count {
- qlents = qlents[:*count]
- }
- return qlents
- }
- }
- }
- if len(qlents) > *count {
- qlents = qlents[:*count]
- }
return qlents
}
-func (tree *Tree) Entry(path string) *TreeEntry {
- ent, err := tree.tree.FindEntry(path)
- if err == object.ErrEntryNotFound {
- return nil
- }
- return &TreeEntry{
- Name: ent.Name,
- Mode: int(ent.Mode),
- hash: ent.Hash,
- repo: tree.repo,
- }
-}
-
func TreeFromObject(repo *git.Repository, obj *object.Tree) *Tree {
return &Tree{
Type: ObjectTypeTree,
M api/graph/schema.resolvers.go => api/graph/schema.resolvers.go +12 -1
@@ 245,7 245,18 @@ func (r *repositoryResolver) RevparseSingle(ctx context.Context, obj *model.Repo
}
func (r *treeResolver) Entries(ctx context.Context, obj *model.Tree, cursor *model.Cursor) ([]*model.TreeEntry, error) {
- panic(fmt.Errorf("tree.entries: not implemented"))
+ if cursor == nil {
+ // TODO: Filter?
+ cursor = model.NewCursor(nil)
+ }
+
+ // TODO: Implement cursor properly
+ entries := obj.Entries()
+ if len(entries) > cursor.Count {
+ entries = entries[:cursor.Count]
+ }
+
+ return entries, nil
}
func (r *userResolver) Repositories(ctx context.Context, obj *model.User, cursor *model.Cursor, filter *model.Filter) (*model.RepositoryCursor, error) {