1package resolvers
2
3import (
4 "context"
5 "fmt"
6 "time"
7
8 "github.com/MichaelMure/git-bug/api/graphql/graph"
9 "github.com/MichaelMure/git-bug/api/graphql/models"
10 "github.com/MichaelMure/git-bug/bug"
11)
12
13var _ graph.CreateOperationResolver = createOperationResolver{}
14
15type createOperationResolver struct{}
16
17func (createOperationResolver) ID(_ context.Context, obj *bug.CreateOperation) (string, error) {
18 return obj.Id().String(), nil
19}
20
21func (createOperationResolver) Author(_ context.Context, obj *bug.CreateOperation) (models.IdentityWrapper, error) {
22 return models.NewLoadedIdentity(obj.Author()), nil
23}
24
25func (createOperationResolver) Date(_ context.Context, obj *bug.CreateOperation) (*time.Time, error) {
26 t := obj.Time()
27 return &t, nil
28}
29
30var _ graph.AddCommentOperationResolver = addCommentOperationResolver{}
31
32type addCommentOperationResolver struct{}
33
34func (addCommentOperationResolver) ID(_ context.Context, obj *bug.AddCommentOperation) (string, error) {
35 return obj.Id().String(), nil
36}
37
38func (addCommentOperationResolver) Author(_ context.Context, obj *bug.AddCommentOperation) (models.IdentityWrapper, error) {
39 return models.NewLoadedIdentity(obj.Author()), nil
40}
41
42func (addCommentOperationResolver) Date(_ context.Context, obj *bug.AddCommentOperation) (*time.Time, error) {
43 t := obj.Time()
44 return &t, nil
45}
46
47var _ graph.EditCommentOperationResolver = editCommentOperationResolver{}
48
49type editCommentOperationResolver struct{}
50
51func (editCommentOperationResolver) ID(_ context.Context, obj *bug.EditCommentOperation) (string, error) {
52 return obj.Id().String(), nil
53}
54
55func (editCommentOperationResolver) Target(_ context.Context, obj *bug.EditCommentOperation) (string, error) {
56 return obj.Target.String(), nil
57}
58
59func (editCommentOperationResolver) Author(_ context.Context, obj *bug.EditCommentOperation) (models.IdentityWrapper, error) {
60 return models.NewLoadedIdentity(obj.Author()), nil
61}
62
63func (editCommentOperationResolver) Date(_ context.Context, obj *bug.EditCommentOperation) (*time.Time, error) {
64 t := obj.Time()
65 return &t, nil
66}
67
68var _ graph.LabelChangeOperationResolver = labelChangeOperationResolver{}
69
70type labelChangeOperationResolver struct{}
71
72func (labelChangeOperationResolver) ID(_ context.Context, obj *bug.LabelChangeOperation) (string, error) {
73 return obj.Id().String(), nil
74}
75
76func (labelChangeOperationResolver) Author(_ context.Context, obj *bug.LabelChangeOperation) (models.IdentityWrapper, error) {
77 return models.NewLoadedIdentity(obj.Author()), nil
78}
79
80func (labelChangeOperationResolver) Date(_ context.Context, obj *bug.LabelChangeOperation) (*time.Time, error) {
81 t := obj.Time()
82 return &t, nil
83}
84
85var _ graph.SetStatusOperationResolver = setStatusOperationResolver{}
86
87type setStatusOperationResolver struct{}
88
89func (setStatusOperationResolver) ID(_ context.Context, obj *bug.SetStatusOperation) (string, error) {
90 return obj.Id().String(), nil
91}
92
93func (setStatusOperationResolver) Author(_ context.Context, obj *bug.SetStatusOperation) (models.IdentityWrapper, error) {
94 return models.NewLoadedIdentity(obj.Author()), nil
95}
96
97func (setStatusOperationResolver) Date(_ context.Context, obj *bug.SetStatusOperation) (*time.Time, error) {
98 t := obj.Time()
99 return &t, nil
100}
101
102func (setStatusOperationResolver) Status(_ context.Context, obj *bug.SetStatusOperation) (models.Status, error) {
103 return convertStatus(obj.Status)
104}
105
106var _ graph.SetTitleOperationResolver = setTitleOperationResolver{}
107
108type setTitleOperationResolver struct{}
109
110func (setTitleOperationResolver) ID(_ context.Context, obj *bug.SetTitleOperation) (string, error) {
111 return obj.Id().String(), nil
112}
113
114func (setTitleOperationResolver) Author(_ context.Context, obj *bug.SetTitleOperation) (models.IdentityWrapper, error) {
115 return models.NewLoadedIdentity(obj.Author()), nil
116}
117
118func (setTitleOperationResolver) Date(_ context.Context, obj *bug.SetTitleOperation) (*time.Time, error) {
119 t := obj.Time()
120 return &t, nil
121}
122
123func convertStatus(status bug.Status) (models.Status, error) {
124 switch status {
125 case bug.OpenStatus:
126 return models.StatusOpen, nil
127 case bug.ClosedStatus:
128 return models.StatusClosed, nil
129 }
130
131 return "", fmt.Errorf("unknown status")
132}