22
33import com .google .gson .Gson ;
44import com .google .gson .GsonBuilder ;
5+ import com .google .gson .JsonArray ;
56import com .google .gson .JsonObject ;
7+ import com .google .gson .reflect .TypeToken ;
68import nl .kingdev .graphqlclient .query .Query ;
79import nl .kingdev .graphqlclient .util .HttpUtil ;
810
11+ import java .util .ArrayList ;
912import java .util .HashMap ;
13+ import java .util .List ;
1014import java .util .Map ;
1115
1216
@@ -22,15 +26,21 @@ public Client(String uri) {
2226 }
2327
2428
25- public < T > T query (Query query , String name , Class < T > type ) {
29+ private JsonObject makeQueryJson (Query query ) {
2630 JsonObject request = new JsonObject ();
2731 request .addProperty ("query" , query .getQuery ());
2832
2933 JsonObject variables = new JsonObject ();
3034 query .getVariables ().forEach ((k , v ) -> variables .addProperty (k , v .toString ()));
3135 request .add ("variables" , variables );
3236
37+ return request ;
38+ }
39+
40+ public <T > T first (Query query , String name , Class <T > type ) {
41+
3342 try {
43+ JsonObject request = makeQueryJson (query );
3444 JsonObject result = gson .fromJson (HttpUtil .post (this .uri , request .toString ()), JsonObject .class );
3545 return gson .fromJson (result .get ("data" ).getAsJsonObject ().get (name ), type );
3646 } catch (Exception e ) {
@@ -40,6 +50,22 @@ public <T> T query(Query query, String name, Class<T> type) {
4050 return null ;
4151 }
4252
53+ public <T > List <T > query (Query query , String name , Class <T > type ) {
54+
55+ try {
56+ JsonObject request = makeQueryJson (query );
57+ JsonObject result = gson .fromJson (HttpUtil .post (this .uri , request .toString ()), JsonObject .class );
58+ JsonArray array = result .get ("data" ).getAsJsonObject ().get (name ).getAsJsonArray ();
59+ return gson .fromJson (array , new TypeToken <T >(){}.getType ());
60+ } catch (Exception e ) {
61+ e .printStackTrace ();
62+ }
63+
64+ return null ;
65+ }
66+
67+
68+
4369
4470 public String getUri () {
4571 return uri ;
0 commit comments