1package resolvers
2
3import (
4 "context"
5 "fmt"
6 "time"
7
8 "github.com/MichaelMure/git-bug/bug"
9 "github.com/MichaelMure/git-bug/graphql/models"
10)
11
12type createOperationResolver struct{}
13
14func (createOperationResolver) Date(ctx context.Context, obj *bug.CreateOperation) (*time.Time, error) {
15 t := obj.Time()
16 return &t, nil
17}
18
19type addCommentOperationResolver struct{}
20
21func (addCommentOperationResolver) Date(ctx context.Context, obj *bug.AddCommentOperation) (*time.Time, error) {
22 t := obj.Time()
23 return &t, nil
24}
25
26type editCommentOperationResolver struct{}
27
28func (editCommentOperationResolver) Date(ctx context.Context, obj *bug.EditCommentOperation) (*time.Time, error) {
29 t := obj.Time()
30 return &t, nil
31}
32
33type labelChangeOperation struct{}
34
35func (labelChangeOperation) Date(ctx context.Context, obj *bug.LabelChangeOperation) (*time.Time, error) {
36 t := obj.Time()
37 return &t, nil
38}
39
40type setStatusOperationResolver struct{}
41
42func (setStatusOperationResolver) Date(ctx context.Context, obj *bug.SetStatusOperation) (*time.Time, error) {
43 t := obj.Time()
44 return &t, nil
45}
46
47func (setStatusOperationResolver) Status(ctx context.Context, obj *bug.SetStatusOperation) (models.Status, error) {
48 return convertStatus(obj.Status)
49}
50
51type setTitleOperationResolver struct{}
52
53func (setTitleOperationResolver) Date(ctx context.Context, obj *bug.SetTitleOperation) (*time.Time, error) {
54 t := obj.Time()
55 return &t, nil
56}
57
58func convertStatus(status bug.Status) (models.Status, error) {
59 switch status {
60 case bug.OpenStatus:
61 return models.StatusOpen, nil
62 case bug.ClosedStatus:
63 return models.StatusClosed, nil
64 }
65
66 return "", fmt.Errorf("unknown status")
67}