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