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