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/graph"
10 "github.com/MichaelMure/git-bug/graphql/models"
11)
12
13var _ graph.CreateOperationResolver = createOperationResolver{}
14
15type createOperationResolver struct{}
16
17func (createOperationResolver) ID(ctx context.Context, obj *bug.CreateOperation) (string, error) {
18 return obj.Id().String(), nil
19}
20
21func (createOperationResolver) Date(ctx context.Context, obj *bug.CreateOperation) (*time.Time, error) {
22 t := obj.Time()
23 return &t, nil
24}
25
26var _ graph.AddCommentOperationResolver = addCommentOperationResolver{}
27
28type addCommentOperationResolver struct{}
29
30func (addCommentOperationResolver) ID(ctx context.Context, obj *bug.AddCommentOperation) (string, error) {
31 return obj.Id().String(), nil
32}
33
34func (addCommentOperationResolver) Date(ctx context.Context, obj *bug.AddCommentOperation) (*time.Time, error) {
35 t := obj.Time()
36 return &t, nil
37}
38
39var _ graph.EditCommentOperationResolver = editCommentOperationResolver{}
40
41type editCommentOperationResolver struct{}
42
43func (editCommentOperationResolver) ID(ctx context.Context, obj *bug.EditCommentOperation) (string, error) {
44 return obj.Id().String(), nil
45}
46
47func (editCommentOperationResolver) Target(ctx context.Context, obj *bug.EditCommentOperation) (string, error) {
48 return obj.Target.String(), nil
49}
50
51func (editCommentOperationResolver) Date(ctx context.Context, obj *bug.EditCommentOperation) (*time.Time, error) {
52 t := obj.Time()
53 return &t, nil
54}
55
56var _ graph.LabelChangeOperationResolver = labelChangeOperationResolver{}
57
58type labelChangeOperationResolver struct{}
59
60func (labelChangeOperationResolver) ID(ctx context.Context, obj *bug.LabelChangeOperation) (string, error) {
61 return obj.Id().String(), nil
62}
63
64func (labelChangeOperationResolver) Date(ctx context.Context, obj *bug.LabelChangeOperation) (*time.Time, error) {
65 t := obj.Time()
66 return &t, nil
67}
68
69var _ graph.SetStatusOperationResolver = setStatusOperationResolver{}
70
71type setStatusOperationResolver struct{}
72
73func (setStatusOperationResolver) ID(ctx context.Context, obj *bug.SetStatusOperation) (string, error) {
74 return obj.Id().String(), nil
75}
76
77func (setStatusOperationResolver) Date(ctx context.Context, obj *bug.SetStatusOperation) (*time.Time, error) {
78 t := obj.Time()
79 return &t, nil
80}
81
82func (setStatusOperationResolver) Status(ctx context.Context, obj *bug.SetStatusOperation) (models.Status, error) {
83 return convertStatus(obj.Status)
84}
85
86var _ graph.SetTitleOperationResolver = setTitleOperationResolver{}
87
88type setTitleOperationResolver struct{}
89
90func (setTitleOperationResolver) ID(ctx context.Context, obj *bug.SetTitleOperation) (string, error) {
91 return obj.Id().String(), nil
92}
93
94func (setTitleOperationResolver) Date(ctx context.Context, obj *bug.SetTitleOperation) (*time.Time, error) {
95 t := obj.Time()
96 return &t, nil
97}
98
99func convertStatus(status bug.Status) (models.Status, error) {
100 switch status {
101 case bug.OpenStatus:
102 return models.StatusOpen, nil
103 case bug.ClosedStatus:
104 return models.StatusClosed, nil
105 }
106
107 return "", fmt.Errorf("unknown status")
108}