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