From 6f6b8e23e00267cde3b424bcf6923ca4450430d4 Mon Sep 17 00:00:00 2001 From: makapszenna <66560584+makapszenna@users.noreply.github.com> Date: Mon, 31 Jan 2022 04:40:53 +0100 Subject: [PATCH] BAEL-5308 An Introduction to Domain Graph Service (DGS) Framework (#11718) Co-authored-by: Adrianna Zychewicz --- graphql/graphql-dgs/pom.xml | 91 +++++++++++++++++++ .../java/com/bealdung/graphqlDGS/Album.java | 25 +++++ .../graphqlDGS/AlbumsDataFetcher.java | 28 ++++++ .../com/bealdung/graphqlDGS/Application.java | 13 +++ .../src/main/resources/application.properties | 1 + .../src/main/resources/schema/schema.graphqls | 9 ++ pom.xml | 1 + 7 files changed, 168 insertions(+) create mode 100644 graphql/graphql-dgs/pom.xml create mode 100644 graphql/graphql-dgs/src/main/java/com/bealdung/graphqlDGS/Album.java create mode 100644 graphql/graphql-dgs/src/main/java/com/bealdung/graphqlDGS/AlbumsDataFetcher.java create mode 100644 graphql/graphql-dgs/src/main/java/com/bealdung/graphqlDGS/Application.java create mode 100644 graphql/graphql-dgs/src/main/resources/application.properties create mode 100644 graphql/graphql-dgs/src/main/resources/schema/schema.graphqls diff --git a/graphql/graphql-dgs/pom.xml b/graphql/graphql-dgs/pom.xml new file mode 100644 index 0000000000..1dc3630276 --- /dev/null +++ b/graphql/graphql-dgs/pom.xml @@ -0,0 +1,91 @@ + + + 4.0.0 + com.baeldung.graphql-dgs + graphql-dgs + 1.0 + graphql-dgs + + + com.baeldung + parent-modules + 1.0.0-SNAPSHOT + ../.. + + + + + + com.netflix.graphql.dgs + graphql-dgs-platform-dependencies + 4.1.0 + pom + import + + + + + + + org.springframework.boot + spring-boot-starter + 2.6.2 + + + + org.springframework.boot + spring-boot-starter-test + 2.6.2 + test + + + + com.netflix.graphql.dgs.codegen + graphql-dgs-codegen-client-core + 5.1.14 + + + + org.springframework.boot + spring-boot-starter-web + 2.6.2 + + + + com.netflix.graphql.dgs + graphql-dgs-spring-boot-starter + 4.9.15 + + + + + + + org.springframework.boot + spring-boot-maven-plugin + 2.6.2 + + + io.github.deweyjose + graphqlcodegen-maven-plugin + 1.14 + + + + generate + + + + + + src/main/resources/schema/schema.graphqls + + com.bealdung.graphqldgs.generated + + + + + + diff --git a/graphql/graphql-dgs/src/main/java/com/bealdung/graphqlDGS/Album.java b/graphql/graphql-dgs/src/main/java/com/bealdung/graphqlDGS/Album.java new file mode 100644 index 0000000000..7e53eb08fe --- /dev/null +++ b/graphql/graphql-dgs/src/main/java/com/bealdung/graphqlDGS/Album.java @@ -0,0 +1,25 @@ +package com.bealdung.graphqlDGS; + +public class Album { + private final String title; + private final String artist; + private final Integer recordNo; + + public Album(String title, String artist, Integer recordNo) { + this.title = title; + this.recordNo = recordNo; + this.artist = artist; + } + + public String getTitle() { + return title; + } + + public String getArtist() { + return artist; + } + + public Integer getRecordNo() { + return recordNo; + } +} diff --git a/graphql/graphql-dgs/src/main/java/com/bealdung/graphqlDGS/AlbumsDataFetcher.java b/graphql/graphql-dgs/src/main/java/com/bealdung/graphqlDGS/AlbumsDataFetcher.java new file mode 100644 index 0000000000..8fda98b941 --- /dev/null +++ b/graphql/graphql-dgs/src/main/java/com/bealdung/graphqlDGS/AlbumsDataFetcher.java @@ -0,0 +1,28 @@ +package com.bealdung.graphqlDGS; + +import com.netflix.graphql.dgs.DgsComponent; +import com.netflix.graphql.dgs.DgsQuery; +import com.netflix.graphql.dgs.InputArgument; +import java.util.Arrays; +import java.util.List; +import java.util.stream.Collectors; + +@DgsComponent +public class AlbumsDataFetcher { + + private final List albums = Arrays.asList( + new Album("Rumours", "Fleetwood Mac", 20), + new Album("What's Going On", "Marvin Gaye", 10), + new Album("Pet Sounds", "The Beach Boys", 12) + ); + + @DgsQuery + public List albums(@InputArgument String titleFilter) { + if(titleFilter == null) { + return albums; + } + return albums.stream() + .filter(s -> s.getTitle().contains(titleFilter)) + .collect(Collectors.toList()); + } +} diff --git a/graphql/graphql-dgs/src/main/java/com/bealdung/graphqlDGS/Application.java b/graphql/graphql-dgs/src/main/java/com/bealdung/graphqlDGS/Application.java new file mode 100644 index 0000000000..ffe8cb2a4e --- /dev/null +++ b/graphql/graphql-dgs/src/main/java/com/bealdung/graphqlDGS/Application.java @@ -0,0 +1,13 @@ +package com.bealdung.graphqlDGS; + +import org.springframework.boot.SpringApplication; +import org.springframework.boot.autoconfigure.SpringBootApplication; + +@SpringBootApplication +public class Application { + + public static void main(String[] args) { + SpringApplication.run(Application.class, args); + } + +} diff --git a/graphql/graphql-dgs/src/main/resources/application.properties b/graphql/graphql-dgs/src/main/resources/application.properties new file mode 100644 index 0000000000..8693adcbd6 --- /dev/null +++ b/graphql/graphql-dgs/src/main/resources/application.properties @@ -0,0 +1 @@ +server.servlet.context-path= diff --git a/graphql/graphql-dgs/src/main/resources/schema/schema.graphqls b/graphql/graphql-dgs/src/main/resources/schema/schema.graphqls new file mode 100644 index 0000000000..90691a7204 --- /dev/null +++ b/graphql/graphql-dgs/src/main/resources/schema/schema.graphqls @@ -0,0 +1,9 @@ +type Query { + albums(titleFilter: String): [Album] +} + +type Album { + title: String + artist: String + recordNo: Int +} diff --git a/pom.xml b/pom.xml index 6219bbc692..a5b6b31022 100644 --- a/pom.xml +++ b/pom.xml @@ -422,6 +422,7 @@ graphql/graphql-java + graphql/graphql-dgs grpc gson guava-modules