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/util/git"
  9)
 10
 11type mutationResolver struct {
 12	cache *cache.MultiRepoCache
 13}
 14
 15func (r mutationResolver) getRepo(repoRef *string) (*cache.RepoCache, error) {
 16	if repoRef != nil {
 17		return r.cache.ResolveRepo(*repoRef)
 18	}
 19
 20	return r.cache.DefaultRepo()
 21}
 22
 23func (r mutationResolver) NewBug(ctx context.Context, repoRef *string, title string, message string, files []git.Hash) (bug.Snapshot, error) {
 24	repo, err := r.getRepo(repoRef)
 25	if err != nil {
 26		return bug.Snapshot{}, err
 27	}
 28
 29	b, err := repo.NewBugWithFiles(title, message, files)
 30	if err != nil {
 31		return bug.Snapshot{}, err
 32	}
 33
 34	snap := b.Snapshot()
 35
 36	return *snap, nil
 37}
 38
 39func (r mutationResolver) Commit(ctx context.Context, repoRef *string, prefix string) (bug.Snapshot, error) {
 40	repo, err := r.getRepo(repoRef)
 41	if err != nil {
 42		return bug.Snapshot{}, err
 43	}
 44
 45	b, err := repo.ResolveBugPrefix(prefix)
 46	if err != nil {
 47		return bug.Snapshot{}, err
 48	}
 49
 50	err = b.Commit()
 51	if err != nil {
 52		return bug.Snapshot{}, err
 53	}
 54
 55	snap := b.Snapshot()
 56
 57	return *snap, nil
 58}
 59
 60func (r mutationResolver) AddComment(ctx context.Context, repoRef *string, prefix string, message string, files []git.Hash) (bug.Snapshot, error) {
 61	repo, err := r.getRepo(repoRef)
 62	if err != nil {
 63		return bug.Snapshot{}, err
 64	}
 65
 66	b, err := repo.ResolveBugPrefix(prefix)
 67	if err != nil {
 68		return bug.Snapshot{}, err
 69	}
 70
 71	err = b.AddCommentWithFiles(message, files)
 72	if err != nil {
 73		return bug.Snapshot{}, err
 74	}
 75
 76	snap := b.Snapshot()
 77
 78	return *snap, nil
 79}
 80
 81func (r mutationResolver) ChangeLabels(ctx context.Context, repoRef *string, prefix string, added []string, removed []string) (bug.Snapshot, error) {
 82	repo, err := r.getRepo(repoRef)
 83	if err != nil {
 84		return bug.Snapshot{}, err
 85	}
 86
 87	b, err := repo.ResolveBugPrefix(prefix)
 88	if err != nil {
 89		return bug.Snapshot{}, err
 90	}
 91
 92	err = b.ChangeLabels(nil, added, removed)
 93	if err != nil {
 94		return bug.Snapshot{}, err
 95	}
 96
 97	snap := b.Snapshot()
 98
 99	return *snap, nil
100}
101
102func (r mutationResolver) Open(ctx context.Context, repoRef *string, prefix string) (bug.Snapshot, error) {
103	repo, err := r.getRepo(repoRef)
104	if err != nil {
105		return bug.Snapshot{}, err
106	}
107
108	b, err := repo.ResolveBugPrefix(prefix)
109	if err != nil {
110		return bug.Snapshot{}, err
111	}
112
113	err = b.Open()
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) Close(ctx context.Context, repoRef *string, prefix 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.ResolveBugPrefix(prefix)
130	if err != nil {
131		return bug.Snapshot{}, err
132	}
133
134	err = b.Close()
135	if err != nil {
136		return bug.Snapshot{}, err
137	}
138
139	snap := b.Snapshot()
140
141	return *snap, nil
142}
143
144func (r mutationResolver) SetTitle(ctx context.Context, repoRef *string, prefix string, title string) (bug.Snapshot, error) {
145	repo, err := r.getRepo(repoRef)
146	if err != nil {
147		return bug.Snapshot{}, err
148	}
149
150	b, err := repo.ResolveBugPrefix(prefix)
151	if err != nil {
152		return bug.Snapshot{}, err
153	}
154
155	err = b.SetTitle(title)
156	if err != nil {
157		return bug.Snapshot{}, err
158	}
159
160	snap := b.Snapshot()
161
162	return *snap, nil
163}