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)
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}