From 8dad611753666dd5439ea486bf11429de917a1df Mon Sep 17 00:00:00 2001 From: Drew DeVault Date: Tue, 12 May 2020 12:44:29 -0400 Subject: [PATCH] (Partially) Rig up tree.entries --- api/graph/model/tree.go | 42 ++++++++++++----------------------- api/graph/schema.resolvers.go | 13 ++++++++++- 2 files changed, 26 insertions(+), 29 deletions(-) diff --git a/api/graph/model/tree.go b/api/graph/model/tree.go index dd06e06..b4fd875 100644 --- a/api/graph/model/tree.go +++ b/api/graph/model/tree.go @@ -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, diff --git a/api/graph/schema.resolvers.go b/api/graph/schema.resolvers.go index 7b45aeb..83d83c5 100644 --- a/api/graph/schema.resolvers.go +++ b/api/graph/schema.resolvers.go @@ -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) { -- 2.38.4