mirror of
https://github.com/MichaelMure/git-bug.git
synced 2024-12-17 04:48:58 +03:00
62 lines
1.4 KiB
Go
62 lines
1.4 KiB
Go
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
|
|
}
|