From 51b154e6d4c4784499b0ca84eace732119dc2185 Mon Sep 17 00:00:00 2001 From: Andy Sotheran Date: Sun, 2 Feb 2020 22:44:34 +0000 Subject: [PATCH] [02.02.20] Messing with inheritance for GraphQL --- pom.xml | 5 +++ .../me/graphql/jpa/entity/BtcPrice.java | 12 ++++++ .../me/graphql/jpa/entity/CryptoPrice.java | 4 +- .../graphql/mutation/CryptoPriceMutation.java | 12 ++++-- .../graphql/service/CryptoPriceService.java | 41 +++++++++++++------ src/main/resources/application.properties | 20 ++++----- .../resources/graphql/cryptoPriceQL.graphqls | 8 ++-- 7 files changed, 71 insertions(+), 31 deletions(-) create mode 100644 src/main/java/cryptosky/me/graphql/jpa/entity/BtcPrice.java diff --git a/pom.xml b/pom.xml index 221529c..082be39 100644 --- a/pom.xml +++ b/pom.xml @@ -71,6 +71,11 @@ postgresql runtime + + org.hibernate + hibernate-entitymanager + 4.3.8.Final + org.projectlombok diff --git a/src/main/java/cryptosky/me/graphql/jpa/entity/BtcPrice.java b/src/main/java/cryptosky/me/graphql/jpa/entity/BtcPrice.java new file mode 100644 index 0000000..0476e26 --- /dev/null +++ b/src/main/java/cryptosky/me/graphql/jpa/entity/BtcPrice.java @@ -0,0 +1,12 @@ +package cryptosky.me.graphql.jpa.entity; + +import lombok.*; +import javax.persistence.*; + +@EqualsAndHashCode(callSuper = true) +@NoArgsConstructor +@ToString +@Data +@Table(name="btc_usd") +public class BtcPrice extends CryptoPrice { +} diff --git a/src/main/java/cryptosky/me/graphql/jpa/entity/CryptoPrice.java b/src/main/java/cryptosky/me/graphql/jpa/entity/CryptoPrice.java index 0195007..f8d8ba5 100644 --- a/src/main/java/cryptosky/me/graphql/jpa/entity/CryptoPrice.java +++ b/src/main/java/cryptosky/me/graphql/jpa/entity/CryptoPrice.java @@ -6,12 +6,12 @@ import javax.persistence.*; import java.time.LocalDate; @AllArgsConstructor -@NoArgsConstructor(access = AccessLevel.PRIVATE) +@NoArgsConstructor @ToString -@Builder @Data @EqualsAndHashCode @Entity +@Table(name = "crypto_price") public class CryptoPrice { @Id diff --git a/src/main/java/cryptosky/me/graphql/mutation/CryptoPriceMutation.java b/src/main/java/cryptosky/me/graphql/mutation/CryptoPriceMutation.java index 4f46d56..2a76ab5 100644 --- a/src/main/java/cryptosky/me/graphql/mutation/CryptoPriceMutation.java +++ b/src/main/java/cryptosky/me/graphql/mutation/CryptoPriceMutation.java @@ -1,6 +1,7 @@ package cryptosky.me.graphql.mutation; import com.coxautodev.graphql.tools.GraphQLMutationResolver; +import cryptosky.me.graphql.jpa.entity.BtcPrice; import cryptosky.me.graphql.jpa.entity.CryptoPrice; import cryptosky.me.graphql.service.CryptoPriceService; import org.springframework.beans.factory.annotation.Autowired; @@ -12,8 +13,13 @@ public class CryptoPriceMutation implements GraphQLMutationResolver { @Autowired private CryptoPriceService cryptoPriceService; - public CryptoPrice createPrice(final String createdDate, final String type, final float av_price, - final float h_price, final float l_price, final float c_price, final float volume ) { - return this.cryptoPriceService.createPrice(createdDate, type, av_price, h_price, l_price, c_price, volume); +// public CryptoPrice createPrice(final String createdDate, final String type, final float av_price, +// final float h_price, final float l_price, final float c_price, final float volume ) { +// return this.cryptoPriceService.createPrice(createdDate, type, av_price, h_price, l_price, c_price, volume); +// } + + public BtcPrice createBtc(final String createdDate, final String type, final float av_price, + final float h_price, final float l_price, final float c_price, final float volume ) { + return this.cryptoPriceService.createBtc(createdDate, type, av_price, h_price, l_price, c_price, volume); } } diff --git a/src/main/java/cryptosky/me/graphql/service/CryptoPriceService.java b/src/main/java/cryptosky/me/graphql/service/CryptoPriceService.java index 82c9cf5..9eccff0 100644 --- a/src/main/java/cryptosky/me/graphql/service/CryptoPriceService.java +++ b/src/main/java/cryptosky/me/graphql/service/CryptoPriceService.java @@ -1,5 +1,6 @@ package cryptosky.me.graphql.service; +import cryptosky.me.graphql.jpa.entity.BtcPrice; import cryptosky.me.graphql.jpa.entity.CryptoPrice; import cryptosky.me.graphql.jpa.repository.CryptoPriceRepository; import org.springframework.stereotype.Service; @@ -25,22 +26,38 @@ public class CryptoPriceService { } @Transactional - public CryptoPrice createPrice(final String createdDate, final String type, final float av_price, - final float h_price, final float l_price, final float c_price, final float volume ) { + public BtcPrice createBtc(final String createdDate, final String type, final float av_price, + final float h_price, final float l_price, final float c_price, final float volume ) { - final CryptoPrice cryptoPrice = CryptoPrice.builder() - .timestamp(LocalDate.parse(createdDate, format)) - .type(type) - .average_price(av_price) - .high_price(h_price) - .low_price(l_price) - .close_price(c_price) - .volume(volume) - .build(); + final BtcPrice btcPrice = new BtcPrice(); + btcPrice.setTimestamp(LocalDate.parse(createdDate, format)); + btcPrice.setAverage_price(av_price); + btcPrice.setType(type); + btcPrice.setHigh_price(h_price); + btcPrice.setLow_price(l_price); + btcPrice.setClose_price(c_price); + btcPrice.setVolume(volume); - return this.cryptoPriceRepository.save(cryptoPrice); + return this.cryptoPriceRepository.save(btcPrice); } +// @Transactional +// public CryptoPrice createPrice(final String createdDate, final String type, final float av_price, +// final float h_price, final float l_price, final float c_price, final float volume ) { +// +// final CryptoPrice cryptoPrice = CryptoPrice.builder() +// .timestamp(LocalDate.parse(createdDate, format)) +// .type(type) +// .average_price(av_price) +// .high_price(h_price) +// .low_price(l_price) +// .close_price(c_price) +// .volume(volume) +// .build(); +// +// return this.cryptoPriceRepository.save(cryptoPrice); +// } + @Transactional(readOnly = true) public List getAllPrices( final int count ) { return this.cryptoPriceRepository.findAll().stream() diff --git a/src/main/resources/application.properties b/src/main/resources/application.properties index a51c10e..c5787cb 100644 --- a/src/main/resources/application.properties +++ b/src/main/resources/application.properties @@ -1,10 +1,10 @@ -server.port=9090 -spring.jpa.database=POSTGRESQL -spring.datasource.platform=postgres -spring.datasource.url=jdbc:postgresql://localhost:5432/postgres -spring.datasource.username=postgres -spring.datasource.password=root -spring.jpa.show-sql=true -spring.jpa.generate-ddl=true -spring.jpa.hibernate.ddl-auto=create-drop -spring.jpa.properties.hibernate.jdbc.lob.non_contextual_creation=true \ No newline at end of file +#server.port=9090 +##spring.jpa.database=POSTGRESQL +##spring.datasource.platform=postgres +##spring.datasource.url=jdbc:postgresql://localhost:5432/postgres +##spring.datasource.username=postgres +##spring.datasource.password=***** +##spring.jpa.show-sql=true +##spring.jpa.generate-ddl=true +##spring.jpa.hibernate.ddl-auto=create-drop +##spring.jpa.properties.hibernate.jdbc.lob.non_contextual_creation=true \ No newline at end of file diff --git a/src/main/resources/graphql/cryptoPriceQL.graphqls b/src/main/resources/graphql/cryptoPriceQL.graphqls index 12a56b5..094bd3a 100644 --- a/src/main/resources/graphql/cryptoPriceQL.graphqls +++ b/src/main/resources/graphql/cryptoPriceQL.graphqls @@ -1,4 +1,4 @@ -type CryptoPrice { +type BtcPrice { id: ID!, timestamp: String!, type: String, @@ -10,10 +10,10 @@ type CryptoPrice { } type Query { - allPrices(count: Int):[CryptoPrice], - allLatest:[CryptoPrice] + allPrices(count: Int):[BtcPrice], + allLatest:[BtcPrice] } type Mutation { - createPrice(createdDate: String!, type: String!, average_price: Float!, high_price: Float, low_price: Float, close_price: Float, volume: Float):CryptoPrice + createBtc(createdDate: String!, type: String!, average_price: Float!, high_price: Float, low_price: Float, close_price: Float, volume: Float):BtcPrice } \ No newline at end of file