aboutsummaryrefslogtreecommitdiffstats
path: root/api/graphql/resolvers/query.go
diff options
context:
space:
mode:
Diffstat (limited to 'api/graphql/resolvers/query.go')
-rw-r--r--api/graphql/resolvers/query.go48
1 files changed, 48 insertions, 0 deletions
diff --git a/api/graphql/resolvers/query.go b/api/graphql/resolvers/query.go
new file mode 100644
index 00000000..4ad7ae0c
--- /dev/null
+++ b/api/graphql/resolvers/query.go
@@ -0,0 +1,48 @@
+package resolvers
+
+import (
+ "context"
+
+ "github.com/MichaelMure/git-bug/api/graphql/graph"
+ "github.com/MichaelMure/git-bug/api/graphql/models"
+ "github.com/MichaelMure/git-bug/cache"
+)
+
+var _ graph.QueryResolver = &rootQueryResolver{}
+
+type rootQueryResolver struct {
+ cache *cache.MultiRepoCache
+}
+
+func (r rootQueryResolver) DefaultRepository(_ context.Context) (*models.Repository, error) {
+ repo, err := r.cache.DefaultRepo()
+
+ if err != nil {
+ return nil, err
+ }
+
+ return &models.Repository{
+ Cache: r.cache,
+ Repo: repo,
+ }, nil
+}
+
+func (r rootQueryResolver) Repository(_ context.Context, ref *string) (*models.Repository, error) {
+ var repo *cache.RepoCache
+ var err error
+
+ if ref == nil {
+ repo, err = r.cache.DefaultRepo()
+ } else {
+ repo, err = r.cache.ResolveRepo(*ref)
+ }
+
+ if err != nil {
+ return nil, err
+ }
+
+ return &models.Repository{
+ Cache: r.cache,
+ Repo: repo,
+ }, nil
+}