label.go

 1package resolvers
 2
 3import (
 4	"context"
 5	"fmt"
 6	"image/color"
 7
 8	"github.com/MichaelMure/git-bug/bug"
 9	"github.com/MichaelMure/git-bug/graphql/graph"
10	"github.com/MichaelMure/git-bug/graphql/models"
11)
12
13var _ graph.LabelResolver = &labelResolver{}
14
15type labelResolver struct{}
16
17func (labelResolver) Name(ctx context.Context, obj *bug.Label) (string, error) {
18	return obj.String(), nil
19}
20
21func (labelResolver) Color(ctx context.Context, obj *bug.Label) (*color.RGBA, error) {
22	rgba := obj.Color().RGBA()
23	return &rgba, nil
24}
25
26var _ graph.LabelChangeResultResolver = &labelChangeResultResolver{}
27
28type labelChangeResultResolver struct{}
29
30func (labelChangeResultResolver) Status(ctx context.Context, obj *bug.LabelChangeResult) (models.LabelChangeStatus, error) {
31	switch obj.Status {
32	case bug.LabelChangeAdded:
33		return models.LabelChangeStatusAdded, nil
34	case bug.LabelChangeRemoved:
35		return models.LabelChangeStatusRemoved, nil
36	case bug.LabelChangeDuplicateInOp:
37		return models.LabelChangeStatusDuplicateInOp, nil
38	case bug.LabelChangeAlreadySet:
39		return models.LabelChangeStatusAlreadyExist, nil
40	case bug.LabelChangeDoesntExist:
41		return models.LabelChangeStatusDoesntExist, nil
42	}
43
44	return "", fmt.Errorf("unknown status")
45}