diff options
author | Michael Muré <batolettre@gmail.com> | 2018-07-29 18:58:42 +0200 |
---|---|---|
committer | Michael Muré <batolettre@gmail.com> | 2018-07-29 18:58:42 +0200 |
commit | 8fa0b258ac89781dae269790a4bde09cbcd2f324 (patch) | |
tree | b9bcf0826f5739f128de52123447cede23291c02 /graphql/resolvers/bug.go | |
parent | 6363518c85cbd8247a5f6507b8a1dd3903cfb71d (diff) | |
download | git-bug-8fa0b258ac89781dae269790a4bde09cbcd2f324.tar.gz |
cleaning
Diffstat (limited to 'graphql/resolvers/bug.go')
-rw-r--r-- | graphql/resolvers/bug.go | 61 |
1 files changed, 61 insertions, 0 deletions
diff --git a/graphql/resolvers/bug.go b/graphql/resolvers/bug.go new file mode 100644 index 00000000..ad6c288b --- /dev/null +++ b/graphql/resolvers/bug.go @@ -0,0 +1,61 @@ +package resolvers + +import ( + "context" + "github.com/MichaelMure/git-bug/bug" + "github.com/MichaelMure/git-bug/cache" +) + +type bugResolver struct { + cache cache.Cacher +} + +func (bugResolver) Status(ctx context.Context, obj *bug.Snapshot) (Status, error) { + return convertStatus(obj.Status) +} + +func (bugResolver) Comments(ctx context.Context, obj *bug.Snapshot, input ConnectionInput) (CommentConnection, error) { + var connection CommentConnection + + edger := func(comment bug.Comment, offset int) Edge { + return CommentEdge{ + Node: comment, + Cursor: offsetToCursor(offset), + } + } + + edges, pageInfo, err := BugCommentPaginate(obj.Comments, edger, input) + + if err != nil { + return connection, err + } + + connection.Edges = edges + connection.PageInfo = pageInfo + connection.TotalCount = len(obj.Comments) + + return connection, nil +} + +func (bugResolver) Operations(ctx context.Context, obj *bug.Snapshot, input ConnectionInput) (OperationConnection, error) { + var connection OperationConnection + + edger := func(op bug.Operation, offset int) Edge { + return OperationEdge{ + Node: op.(OperationUnion), + Cursor: offsetToCursor(offset), + } + } + + edges, pageInfo, err := BugOperationPaginate(obj.Operations, edger, input) + + if err != nil { + return connection, err + } + + connection.Edges = edges + connection.PageInfo = pageInfo + connection.TotalCount = len(obj.Operations) + + return connection, nil +} |