mutation.go

  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	b, err = b.Commit()
 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.ResolveBugPrefix(prefix)
 66	if err != nil {
 67		return bug.Snapshot{}, err
 68	}
 69
 70	b, err = b.AddComment(message)
 71	if err != nil {
 72		return bug.Snapshot{}, err
 73	}
 74
 75	snap := b.Snapshot()
 76
 77	return *snap, nil
 78}
 79
 80func (r mutationResolver) ChangeLabels(ctx context.Context, repoRef *string, prefix string, added []string, removed []string) (bug.Snapshot, error) {
 81	repo, err := r.getRepo(repoRef)
 82	if err != nil {
 83		return bug.Snapshot{}, err
 84	}
 85
 86	b, err := repo.ResolveBugPrefix(prefix)
 87	if err != nil {
 88		return bug.Snapshot{}, err
 89	}
 90
 91	b, err = b.ChangeLabels(added, removed)
 92	if err != nil {
 93		return bug.Snapshot{}, err
 94	}
 95
 96	snap := b.Snapshot()
 97
 98	return *snap, nil
 99}
100
101func (r mutationResolver) Open(ctx context.Context, repoRef *string, prefix string) (bug.Snapshot, error) {
102	repo, err := r.getRepo(repoRef)
103	if err != nil {
104		return bug.Snapshot{}, err
105	}
106
107	b, err := repo.ResolveBugPrefix(prefix)
108	if err != nil {
109		return bug.Snapshot{}, err
110	}
111
112	b, err = b.Open()
113	if err != nil {
114		return bug.Snapshot{}, err
115	}
116
117	snap := b.Snapshot()
118
119	return *snap, nil
120}
121
122func (r mutationResolver) Close(ctx context.Context, repoRef *string, prefix string) (bug.Snapshot, error) {
123	repo, err := r.getRepo(repoRef)
124	if err != nil {
125		return bug.Snapshot{}, err
126	}
127
128	b, err := repo.ResolveBugPrefix(prefix)
129	if err != nil {
130		return bug.Snapshot{}, err
131	}
132
133	b, err = b.Close()
134	if err != nil {
135		return bug.Snapshot{}, err
136	}
137
138	snap := b.Snapshot()
139
140	return *snap, nil
141}
142
143func (r mutationResolver) SetTitle(ctx context.Context, repoRef *string, prefix string, title string) (bug.Snapshot, error) {
144	repo, err := r.getRepo(repoRef)
145	if err != nil {
146		return bug.Snapshot{}, err
147	}
148
149	b, err := repo.ResolveBugPrefix(prefix)
150	if err != nil {
151		return bug.Snapshot{}, err
152	}
153
154	b, err = b.SetTitle(title)
155	if err != nil {
156		return bug.Snapshot{}, err
157	}
158
159	snap := b.Snapshot()
160
161	return *snap, nil
162}