mutation.go

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