bug.go

  1package resolvers
  2
  3import (
  4	"context"
  5
  6	"github.com/MichaelMure/git-bug/api/graphql/connections"
  7	"github.com/MichaelMure/git-bug/api/graphql/graph"
  8	"github.com/MichaelMure/git-bug/api/graphql/models"
  9	"github.com/MichaelMure/git-bug/bug"
 10	"github.com/MichaelMure/git-bug/entity/dag"
 11)
 12
 13var _ graph.BugResolver = &bugResolver{}
 14
 15type bugResolver struct{}
 16
 17func (bugResolver) ID(_ context.Context, obj models.BugWrapper) (string, error) {
 18	return obj.Id().String(), nil
 19}
 20
 21func (bugResolver) HumanID(_ context.Context, obj models.BugWrapper) (string, error) {
 22	return obj.Id().Human(), nil
 23}
 24
 25func (bugResolver) Status(_ context.Context, obj models.BugWrapper) (models.Status, error) {
 26	return convertStatus(obj.Status())
 27}
 28
 29func (bugResolver) Comments(_ context.Context, obj models.BugWrapper, after *string, before *string, first *int, last *int) (*models.CommentConnection, error) {
 30	input := connections.Input{
 31		Before: before,
 32		After:  after,
 33		First:  first,
 34		Last:   last,
 35	}
 36
 37	comments, err := obj.Comments()
 38	if err != nil {
 39		return nil, err
 40	}
 41
 42	conMaker := func(edges []*models.CommentEdge, nodes []bug.Comment, info *models.PageInfo, totalCount int) (*models.CommentConnection, error) {
 43		var commentNodes []*bug.Comment
 44		for _, c := range nodes {
 45			commentNodes = append(commentNodes, &c)
 46		}
 47		return &models.CommentConnection{
 48			Edges:      edges,
 49			Nodes:      commentNodes,
 50			PageInfo:   info,
 51			TotalCount: totalCount,
 52		}, nil
 53	}
 54
 55	return connections.Paginate(comments, input)
 56}
 57
 58func (bugResolver) Operations(_ context.Context, obj models.BugWrapper, after *string, before *string, first *int, last *int) (*connections.Result[dag.Operation], error) {
 59	input := connections.Input{
 60		Before: before,
 61		After:  after,
 62		First:  first,
 63		Last:   last,
 64	}
 65
 66	ops, err := obj.Operations()
 67	if err != nil {
 68		return nil, err
 69	}
 70
 71	return connections.Paginate(ops, input)
 72}
 73
 74func (bugResolver) Timeline(_ context.Context, obj models.BugWrapper, after *string, before *string, first *int, last *int) (*connections.Result[bug.TimelineItem], error) {
 75	input := connections.Input{
 76		Before: before,
 77		After:  after,
 78		First:  first,
 79		Last:   last,
 80	}
 81
 82	timeline, err := obj.Timeline()
 83	if err != nil {
 84		return nil, err
 85	}
 86
 87	return connections.Paginate(timeline, input)
 88}
 89
 90func (bugResolver) Actors(_ context.Context, obj models.BugWrapper, after *string, before *string, first *int, last *int) (*connections.Result[models.IdentityWrapper], error) {
 91	input := connections.Input{
 92		Before: before,
 93		After:  after,
 94		First:  first,
 95		Last:   last,
 96	}
 97
 98	actors, err := obj.Actors()
 99	if err != nil {
100		return nil, err
101	}
102
103	return connections.Paginate(actors, input)
104}
105
106func (bugResolver) Participants(_ context.Context, obj models.BugWrapper, after *string, before *string, first *int, last *int) (*connections.Result[models.IdentityWrapper], error) {
107	input := connections.Input{
108		Before: before,
109		After:  after,
110		First:  first,
111		Last:   last,
112	}
113
114	participants, err := obj.Participants()
115	if err != nil {
116		return nil, err
117	}
118
119	return connections.Paginate(participants, input)
120}