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 "github.com/MichaelMure/git-bug/operations"
11)
12
13type addCommentOperationResolver struct{}
14
15func (addCommentOperationResolver) Author(ctx context.Context, obj *operations.AddCommentOperation) (bug.Person, error) {
16 return obj.Author, nil
17}
18
19func (addCommentOperationResolver) Date(ctx context.Context, obj *operations.AddCommentOperation) (time.Time, error) {
20 return obj.Time(), nil
21}
22
23type createOperationResolver struct{}
24
25func (createOperationResolver) Author(ctx context.Context, obj *operations.CreateOperation) (bug.Person, error) {
26 return obj.Author, nil
27}
28
29func (createOperationResolver) Date(ctx context.Context, obj *operations.CreateOperation) (time.Time, error) {
30 return obj.Time(), nil
31}
32
33type labelChangeOperation struct{}
34
35func (labelChangeOperation) Author(ctx context.Context, obj *operations.LabelChangeOperation) (bug.Person, error) {
36 return obj.Author, nil
37}
38
39func (labelChangeOperation) Date(ctx context.Context, obj *operations.LabelChangeOperation) (time.Time, error) {
40 return obj.Time(), nil
41}
42
43type setStatusOperationResolver struct{}
44
45func (setStatusOperationResolver) Author(ctx context.Context, obj *operations.SetStatusOperation) (bug.Person, error) {
46 return obj.Author, nil
47}
48
49func (setStatusOperationResolver) Date(ctx context.Context, obj *operations.SetStatusOperation) (time.Time, error) {
50 return obj.Time(), nil
51}
52
53func (setStatusOperationResolver) Status(ctx context.Context, obj *operations.SetStatusOperation) (models.Status, error) {
54 return convertStatus(obj.Status)
55}
56
57type setTitleOperationResolver struct{}
58
59func (setTitleOperationResolver) Author(ctx context.Context, obj *operations.SetTitleOperation) (bug.Person, error) {
60 return obj.Author, nil
61}
62
63func (setTitleOperationResolver) Date(ctx context.Context, obj *operations.SetTitleOperation) (time.Time, error) {
64 return obj.Time(), nil
65}
66
67func convertStatus(status bug.Status) (models.Status, error) {
68 switch status {
69 case bug.OpenStatus:
70 return models.StatusOpen, nil
71 case bug.ClosedStatus:
72 return models.StatusClosed, nil
73 }
74
75 return "", fmt.Errorf("Unknown status")
76}