1package resolvers
2
3import (
4 "context"
5
6 "github.com/MichaelMure/git-bug/bug"
7 "github.com/MichaelMure/git-bug/cache"
8)
9
10type mutationResolver struct {
11 cache cache.Cacher
12}
13
14func (r mutationResolver) getRepo(repoRef *string) (cache.RepoCacher, error) {
15 if repoRef != nil {
16 return r.cache.ResolveRepo(*repoRef)
17 }
18
19 return r.cache.DefaultRepo()
20}
21
22func (r mutationResolver) NewBug(ctx context.Context, repoRef *string, title string, message string) (bug.Snapshot, error) {
23 repo, err := r.getRepo(repoRef)
24 if err != nil {
25 return bug.Snapshot{}, err
26 }
27
28 b, err := repo.NewBug(title, message)
29 if err != nil {
30 return bug.Snapshot{}, err
31 }
32
33 snap := b.Snapshot()
34
35 return *snap, nil
36}
37
38func (r mutationResolver) Commit(ctx context.Context, repoRef *string, prefix string) (bug.Snapshot, error) {
39 repo, err := r.getRepo(repoRef)
40 if err != nil {
41 return bug.Snapshot{}, err
42 }
43
44 b, err := repo.ResolveBugPrefix(prefix)
45 if err != nil {
46 return bug.Snapshot{}, err
47 }
48
49 err = repo.Commit(b)
50 if err != nil {
51 return bug.Snapshot{}, err
52 }
53
54 snap := b.Snapshot()
55
56 return *snap, nil
57}
58
59func (r mutationResolver) AddComment(ctx context.Context, repoRef *string, prefix string, message string) (bug.Snapshot, error) {
60 repo, err := r.getRepo(repoRef)
61 if err != nil {
62 return bug.Snapshot{}, err
63 }
64
65 b, err := repo.AddComment(repoRef, prefix, message)
66 if err != nil {
67 return bug.Snapshot{}, err
68 }
69
70 snap := b.Snapshot()
71
72 return *snap, nil
73}
74
75func (r mutationResolver) ChangeLabels(ctx context.Context, repoRef *string, prefix string, added []string, removed []string) (bug.Snapshot, error) {
76 repo, err := r.getRepo(repoRef)
77 if err != nil {
78 return bug.Snapshot{}, err
79 }
80
81 b, err := repo.ChangeLabels(repoRef, prefix, added, removed)
82 if err != nil {
83 return bug.Snapshot{}, err
84 }
85
86 snap := b.Snapshot()
87
88 return *snap, nil
89}
90
91func (r mutationResolver) Open(ctx context.Context, repoRef *string, prefix string) (bug.Snapshot, error) {
92 repo, err := r.getRepo(repoRef)
93 if err != nil {
94 return bug.Snapshot{}, err
95 }
96
97 b, err := repo.Open(repoRef, prefix)
98 if err != nil {
99 return bug.Snapshot{}, err
100 }
101
102 snap := b.Snapshot()
103
104 return *snap, nil
105}
106
107func (r mutationResolver) Close(ctx context.Context, repoRef *string, prefix string) (bug.Snapshot, error) {
108 repo, err := r.getRepo(repoRef)
109 if err != nil {
110 return bug.Snapshot{}, err
111 }
112
113 b, err := repo.Close(repoRef, prefix)
114 if err != nil {
115 return bug.Snapshot{}, err
116 }
117
118 snap := b.Snapshot()
119
120 return *snap, nil
121}
122
123func (r mutationResolver) SetTitle(ctx context.Context, repoRef *string, prefix string, title string) (bug.Snapshot, error) {
124 repo, err := r.getRepo(repoRef)
125 if err != nil {
126 return bug.Snapshot{}, err
127 }
128
129 b, err := repo.SetTitle(repoRef, prefix, title)
130 if err != nil {
131 return bug.Snapshot{}, err
132 }
133
134 snap := b.Snapshot()
135
136 return *snap, nil
137}