From 6136071a296698b9f35626d0972ddae84194b6db Mon Sep 17 00:00:00 2001 From: ASAKURA Kazuki <32762324+Arthur1@users.noreply.github.com> Date: Sun, 10 Sep 2023 08:11:54 +0000 Subject: [PATCH] implements the resolver using ent client --- graph/ent.resolvers.go | 9 ++++----- graph/resolver.go | 18 +++++++++++++++++- 2 files changed, 21 insertions(+), 6 deletions(-) diff --git a/graph/ent.resolvers.go b/graph/ent.resolvers.go index 872b96c..65c3d89 100644 --- a/graph/ent.resolvers.go +++ b/graph/ent.resolvers.go @@ -5,7 +5,6 @@ package graph import ( "context" - "fmt" "entgo.io/contrib/entgql" "github.com/Arthur1/economical-graphql-server-demo/ent" @@ -13,19 +12,19 @@ import ( ) func (r *queryResolver) Node(ctx context.Context, id int) (ent.Noder, error) { - panic(fmt.Errorf("not implemented")) + return r.Client.Noder(ctx, id, ent.WithFixedNodeType(getTypeFromID(id))) } func (r *queryResolver) Nodes(ctx context.Context, ids []int) ([]ent.Noder, error) { - panic(fmt.Errorf("not implemented")) + return r.Client.Noders(ctx, ids) } func (r *queryResolver) Artists(ctx context.Context, after *entgql.Cursor[int], first *int, before *entgql.Cursor[int], last *int, where *ent.ArtistWhereInput) (*ent.ArtistConnection, error) { - panic(fmt.Errorf("not implemented")) + return r.Client.Artist.Query().Paginate(ctx, after, first, before, last, ent.WithArtistFilter(where.Filter)) } func (r *queryResolver) Songs(ctx context.Context, after *entgql.Cursor[int], first *int, before *entgql.Cursor[int], last *int, where *ent.SongWhereInput) (*ent.SongConnection, error) { - panic(fmt.Errorf("not implemented")) + return r.Client.Song.Query().Paginate(ctx, after, first, before, last, ent.WithSongFilter(where.Filter)) } // Query returns generated.QueryResolver implementation. diff --git a/graph/resolver.go b/graph/resolver.go index a25c09c..c49f3ed 100644 --- a/graph/resolver.go +++ b/graph/resolver.go @@ -1,7 +1,23 @@ package graph +import ( + "github.com/Arthur1/economical-graphql-server-demo/ent" + "github.com/Arthur1/economical-graphql-server-demo/ent/artist" + "github.com/Arthur1/economical-graphql-server-demo/ent/song" +) + // This file will not be regenerated automatically. // // It serves as dependency injection for your app, add any dependencies you require here. -type Resolver struct{} +type Resolver struct { + Client *ent.Client +} + +func getTypeFromID(id int) string { + if id > 1000 { + return artist.Table + } else { + return song.Table + } +}