diff options
author | Michael Muré <batolettre@gmail.com> | 2020-06-21 22:12:04 +0200 |
---|---|---|
committer | Michael Muré <batolettre@gmail.com> | 2020-06-27 23:03:05 +0200 |
commit | 2ab6381a94d55fa22b80acdbb18849d6b24951f9 (patch) | |
tree | 99942b000955623ea7466b9fa4cc7dab37645df6 /graphql/resolvers/repo.go | |
parent | 5f72b04ef8e84b1c367ca6874519706318e351f5 (diff) | |
download | git-bug-2ab6381a94d55fa22b80acdbb18849d6b24951f9.tar.gz git-bug-2ab6381a94d55fa22b80acdbb18849d6b24951f9.zip |
Reorganize the webUI and API code
Included in the changes:
- create a new /api root package to hold all API code, migrate /graphql in there
- git API handlers all use the cache instead of the repo directly
- git API handlers are now tested
- git API handlers now require a "repo" mux parameter
- lots of untangling of API/handlers/middleware
- less code in commands/webui.go
Diffstat (limited to 'graphql/resolvers/repo.go')
-rw-r--r-- | graphql/resolvers/repo.go | 188 |
1 files changed, 0 insertions, 188 deletions
diff --git a/graphql/resolvers/repo.go b/graphql/resolvers/repo.go deleted file mode 100644 index 009ccab6..00000000 --- a/graphql/resolvers/repo.go +++ /dev/null @@ -1,188 +0,0 @@ -package resolvers - -import ( - "context" - - "github.com/MichaelMure/git-bug/bug" - "github.com/MichaelMure/git-bug/entity" - "github.com/MichaelMure/git-bug/graphql/connections" - "github.com/MichaelMure/git-bug/graphql/graph" - "github.com/MichaelMure/git-bug/graphql/graphqlidentity" - "github.com/MichaelMure/git-bug/graphql/models" - "github.com/MichaelMure/git-bug/query" -) - -var _ graph.RepositoryResolver = &repoResolver{} - -type repoResolver struct{} - -func (repoResolver) Name(_ context.Context, obj *models.Repository) (*string, error) { - name := obj.Repo.Name() - return &name, nil -} - -func (repoResolver) AllBugs(_ context.Context, obj *models.Repository, after *string, before *string, first *int, last *int, queryStr *string) (*models.BugConnection, error) { - input := models.ConnectionInput{ - Before: before, - After: after, - First: first, - Last: last, - } - - var q *query.Query - if queryStr != nil { - query2, err := query.Parse(*queryStr) - if err != nil { - return nil, err - } - q = query2 - } else { - q = query.NewQuery() - } - - // Simply pass a []string with the ids to the pagination algorithm - source := obj.Repo.QueryBugs(q) - - // The edger create a custom edge holding just the id - edger := func(id entity.Id, offset int) connections.Edge { - return connections.LazyBugEdge{ - Id: id, - Cursor: connections.OffsetToCursor(offset), - } - } - - // The conMaker will finally load and compile bugs from git to replace the selected edges - conMaker := func(lazyBugEdges []*connections.LazyBugEdge, lazyNode []entity.Id, info *models.PageInfo, totalCount int) (*models.BugConnection, error) { - edges := make([]*models.BugEdge, len(lazyBugEdges)) - nodes := make([]models.BugWrapper, len(lazyBugEdges)) - - for i, lazyBugEdge := range lazyBugEdges { - excerpt, err := obj.Repo.ResolveBugExcerpt(lazyBugEdge.Id) - if err != nil { - return nil, err - } - - b := models.NewLazyBug(obj.Repo, excerpt) - - edges[i] = &models.BugEdge{ - Cursor: lazyBugEdge.Cursor, - Node: b, - } - nodes[i] = b - } - - return &models.BugConnection{ - Edges: edges, - Nodes: nodes, - PageInfo: info, - TotalCount: totalCount, - }, nil - } - - return connections.LazyBugCon(source, edger, conMaker, input) -} - -func (repoResolver) Bug(_ context.Context, obj *models.Repository, prefix string) (models.BugWrapper, error) { - excerpt, err := obj.Repo.ResolveBugExcerptPrefix(prefix) - if err != nil { - return nil, err - } - - return models.NewLazyBug(obj.Repo, excerpt), nil -} - -func (repoResolver) AllIdentities(_ context.Context, obj *models.Repository, after *string, before *string, first *int, last *int) (*models.IdentityConnection, error) { - input := models.ConnectionInput{ - Before: before, - After: after, - First: first, - Last: last, - } - - // Simply pass a []string with the ids to the pagination algorithm - source := obj.Repo.AllIdentityIds() - - // The edger create a custom edge holding just the id - edger := func(id entity.Id, offset int) connections.Edge { - return connections.LazyIdentityEdge{ - Id: id, - Cursor: connections.OffsetToCursor(offset), - } - } - - // The conMaker will finally load and compile identities from git to replace the selected edges - conMaker := func(lazyIdentityEdges []*connections.LazyIdentityEdge, lazyNode []entity.Id, info *models.PageInfo, totalCount int) (*models.IdentityConnection, error) { - edges := make([]*models.IdentityEdge, len(lazyIdentityEdges)) - nodes := make([]models.IdentityWrapper, len(lazyIdentityEdges)) - - for k, lazyIdentityEdge := range lazyIdentityEdges { - excerpt, err := obj.Repo.ResolveIdentityExcerpt(lazyIdentityEdge.Id) - if err != nil { - return nil, err - } - - i := models.NewLazyIdentity(obj.Repo, excerpt) - - edges[k] = &models.IdentityEdge{ - Cursor: lazyIdentityEdge.Cursor, - Node: i, - } - nodes[k] = i - } - - return &models.IdentityConnection{ - Edges: edges, - Nodes: nodes, - PageInfo: info, - TotalCount: totalCount, - }, nil - } - - return connections.LazyIdentityCon(source, edger, conMaker, input) -} - -func (repoResolver) Identity(_ context.Context, obj *models.Repository, prefix string) (models.IdentityWrapper, error) { - excerpt, err := obj.Repo.ResolveIdentityExcerptPrefix(prefix) - if err != nil { - return nil, err - } - - return models.NewLazyIdentity(obj.Repo, excerpt), nil -} - -func (repoResolver) UserIdentity(ctx context.Context, obj *models.Repository) (models.IdentityWrapper, error) { - id, err := graphqlidentity.ForContext(ctx, obj.Repo) - if err == graphqlidentity.ErrNotAuthenticated { - return nil, nil - } else if err != nil { - return nil, err - } - return models.NewLoadedIdentity(id.Identity), nil -} - -func (repoResolver) ValidLabels(_ context.Context, obj *models.Repository, after *string, before *string, first *int, last *int) (*models.LabelConnection, error) { - input := models.ConnectionInput{ - Before: before, - After: after, - First: first, - Last: last, - } - - edger := func(label bug.Label, offset int) connections.Edge { - return models.LabelEdge{ - Node: label, - Cursor: connections.OffsetToCursor(offset), - } - } - - conMaker := func(edges []*models.LabelEdge, nodes []bug.Label, info *models.PageInfo, totalCount int) (*models.LabelConnection, error) { - return &models.LabelConnection{ - Edges: edges, - Nodes: nodes, - PageInfo: info, - TotalCount: totalCount, - }, nil - } - - return connections.LabelCon(obj.Repo.ValidLabels(), edger, conMaker, input) -} |