22
33import com .google .common .collect .ImmutableMap ;
44import graphql .schema .DataFetcher ;
5+ import graphql .schema .GraphQLObjectType ;
6+ import graphql .schema .TypeResolver ;
57import org .springframework .stereotype .Component ;
68
9+ import java .util .ArrayList ;
710import java .util .Arrays ;
811import java .util .List ;
912import java .util .Map ;
@@ -26,6 +29,11 @@ public class GraphQLDataFetchers {
2629 "authorId" , "author-3" )
2730 );
2831
32+ private static List <Map <String , String >> movies = Arrays .asList (
33+ ImmutableMap .of ("id" , "movie-1" ,
34+ "name" , "Lost in translation"
35+ ));
36+
2937 private static List <Map <String , String >> authors = Arrays .asList (
3038 ImmutableMap .of ("id" , "author-1" ,
3139 "firstName" , "Joanne" ,
@@ -61,9 +69,47 @@ public DataFetcher getAuthorDataFetcher() {
6169 };
6270 }
6371
72+ public DataFetcher getBookTitleDataFetcher () {
73+ return dataFetchingEnvironment -> {
74+ Map <String , String > book = dataFetchingEnvironment .getSource ();
75+ return book .get ("name" );
76+ };
77+ }
78+
6479 public DataFetcher helloDataFetcher () {
6580 return dataFetchingEnvironment -> {
6681 return "world" ;
6782 };
6883 }
84+
85+ public DataFetcher getMovieByIdDataFetcher () {
86+ return dataFetchingEnvironment -> {
87+ String movieId = dataFetchingEnvironment .getArgument ("id" );
88+ return movies
89+ .stream ()
90+ .filter (book -> book .get ("id" ).equals (movieId ))
91+ .findFirst ()
92+ .orElse (null );
93+ };
94+ }
95+
96+ public DataFetcher everythingDataFetcher () {
97+ return env -> {
98+ List <Object > result = new ArrayList <>();
99+ result .addAll (movies );
100+ result .addAll (books );
101+ return result ;
102+ };
103+ }
104+
105+ public TypeResolver everythingTypeResolver = env -> {
106+ Map <String , Object > bookOrMovie = env .getObject ();
107+ String id = (String ) bookOrMovie .get ("id" );
108+ if (id .startsWith ("movie" )) {
109+ return (GraphQLObjectType ) env .getSchema ().getType ("Movie" );
110+ } else {
111+ return (GraphQLObjectType ) env .getSchema ().getType ("Book" );
112+ }
113+
114+ };
69115}
0 commit comments