operations.go

 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}