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	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}