Compare commits
6 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 57ab9b3e01 | |||
| 487eb48322 | |||
| 8955933a47 | |||
| 0626395b9f | |||
| a78cdb24fd | |||
| 1b1bde8c76 |
17
pom.xml
17
pom.xml
@ -67,6 +67,23 @@
|
|||||||
<version>4.3.8.Final</version>
|
<version>4.3.8.Final</version>
|
||||||
</dependency>
|
</dependency>
|
||||||
|
|
||||||
|
<!-- GraghQL -->
|
||||||
|
<dependency>
|
||||||
|
<groupId>com.graphql-java</groupId>
|
||||||
|
<artifactId>graphql-spring-boot-starter</artifactId>
|
||||||
|
<version>5.0.2</version>
|
||||||
|
</dependency>
|
||||||
|
<dependency>
|
||||||
|
<groupId>com.graphql-java</groupId>
|
||||||
|
<artifactId>graphql-java-tools</artifactId>
|
||||||
|
<version>5.2.4</version>
|
||||||
|
</dependency>
|
||||||
|
<dependency>
|
||||||
|
<groupId>com.graphql-java</groupId>
|
||||||
|
<artifactId>graphiql-spring-boot-starter</artifactId>
|
||||||
|
<version>5.0.2</version>
|
||||||
|
</dependency>
|
||||||
|
|
||||||
<!-- Artemis -->
|
<!-- Artemis -->
|
||||||
<dependency>
|
<dependency>
|
||||||
<groupId>org.springframework.boot</groupId>
|
<groupId>org.springframework.boot</groupId>
|
||||||
|
|||||||
@ -78,7 +78,7 @@ public class PriceConsumer {
|
|||||||
JsonNode messageJson = objectMapper.readTree(message.getText());
|
JsonNode messageJson = objectMapper.readTree(message.getText());
|
||||||
cryptoPriceModel = objectMapper.readValue(messageJson.traverse(), CryptoPriceModel.class);
|
cryptoPriceModel = objectMapper.readValue(messageJson.traverse(), CryptoPriceModel.class);
|
||||||
|
|
||||||
logger.info("Message with syncId of [{}] is for customer [{}]", syncId, cryptoPriceModel);
|
logger.info("Message with syncId of [{}] is for [{}]", syncId, cryptoPriceModel);
|
||||||
|
|
||||||
priceService.createRecord(cryptoPriceModel, correlationId, message);
|
priceService.createRecord(cryptoPriceModel, correlationId, message);
|
||||||
|
|
||||||
|
|||||||
@ -77,7 +77,7 @@ public class TweetConsumer {
|
|||||||
JsonNode messageJson = objectMapper.readTree(message.getText());
|
JsonNode messageJson = objectMapper.readTree(message.getText());
|
||||||
sentimentModel = objectMapper.readValue(messageJson.traverse(), SentimentModel.class);
|
sentimentModel = objectMapper.readValue(messageJson.traverse(), SentimentModel.class);
|
||||||
|
|
||||||
logger.info("Message with syncId of [{}] is for customer [{}]", syncId, sentimentModel);
|
logger.info("Message with syncId of [{}] is for [{}]", syncId, sentimentModel);
|
||||||
|
|
||||||
sentimentService.createRecord(sentimentModel, correlationId, message);
|
sentimentService.createRecord(sentimentModel, correlationId, message);
|
||||||
|
|
||||||
|
|||||||
@ -0,0 +1,37 @@
|
|||||||
|
package cryptosky.me.pricing.graphql.queries;
|
||||||
|
|
||||||
|
import com.coxautodev.graphql.tools.GraphQLQueryResolver;
|
||||||
|
import cryptosky.me.pricing.models.entities.BtcPriceModel;
|
||||||
|
import cryptosky.me.pricing.service.PriceService;
|
||||||
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
|
import org.springframework.stereotype.Component;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
import java.util.Optional;
|
||||||
|
|
||||||
|
@Component
|
||||||
|
public class BtcPriceQuery implements GraphQLQueryResolver {
|
||||||
|
|
||||||
|
@Autowired
|
||||||
|
private PriceService priceService;
|
||||||
|
|
||||||
|
public List<BtcPriceModel> getAllPrices(final int count ) {
|
||||||
|
return this.priceService.getAllPrices(count);
|
||||||
|
}
|
||||||
|
|
||||||
|
public List<BtcPriceModel> getPricesBetweenCounts( final int startCount, final int endCount ) {
|
||||||
|
return this.priceService.getPricesBetweenCounts(startCount, endCount);
|
||||||
|
}
|
||||||
|
|
||||||
|
public Optional<BtcPriceModel> getLatest() {
|
||||||
|
return this.priceService.getLatest();
|
||||||
|
}
|
||||||
|
|
||||||
|
public Optional<BtcPriceModel> getPriceForCreatedDate( final String createdDate ) {
|
||||||
|
return this.priceService.getPriceForCreatedDate(createdDate);
|
||||||
|
}
|
||||||
|
|
||||||
|
public List<BtcPriceModel> getPriceBetweenDates(final String startDate, final String endDate ) {
|
||||||
|
return this.priceService.getPriceBetweenDates(startDate, endDate);
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -9,7 +9,6 @@ import cryptosky.me.pricing.models.entities.CryptoPriceModel;
|
|||||||
import cryptosky.me.pricing.models.repositories.BtcPriceRepository;
|
import cryptosky.me.pricing.models.repositories.BtcPriceRepository;
|
||||||
|
|
||||||
import cryptosky.me.exceptions.NotSupportedCurrencyTypeException;
|
import cryptosky.me.exceptions.NotSupportedCurrencyTypeException;
|
||||||
import cryptosky.me.exceptions.DatabaseViolationException;
|
|
||||||
|
|
||||||
import org.slf4j.Logger;
|
import org.slf4j.Logger;
|
||||||
import org.slf4j.LoggerFactory;
|
import org.slf4j.LoggerFactory;
|
||||||
@ -22,11 +21,9 @@ import org.springframework.transaction.annotation.Transactional;
|
|||||||
import javax.jms.JMSException;
|
import javax.jms.JMSException;
|
||||||
import javax.jms.TextMessage;
|
import javax.jms.TextMessage;
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.Comparator;
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Optional;
|
import java.util.Optional;
|
||||||
import java.util.stream.Collectors;
|
import java.util.stream.Collectors;
|
||||||
import java.time.LocalDateTime;
|
|
||||||
|
|
||||||
import static cryptosky.me.ArtemisSyncMessaging.*;
|
import static cryptosky.me.ArtemisSyncMessaging.*;
|
||||||
import static cryptosky.me.SupportedCurrencies.*;
|
import static cryptosky.me.SupportedCurrencies.*;
|
||||||
@ -55,29 +52,6 @@ public class PriceService {
|
|||||||
this.dlqName = dlqName;
|
this.dlqName = dlqName;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Transactional
|
|
||||||
public BtcPriceModel createBtc(final String createdDate, final String type,
|
|
||||||
final float av_price,
|
|
||||||
final float h_price,
|
|
||||||
final float l_price,
|
|
||||||
final float o_price,
|
|
||||||
final float c_price,
|
|
||||||
final float volume ) {
|
|
||||||
|
|
||||||
final BtcPriceModel btcPrice = new BtcPriceModel();
|
|
||||||
btcPrice.setTimestamp(LocalDateTime.parse((createdDate)));
|
|
||||||
btcPrice.setType(type);
|
|
||||||
btcPrice.setAverage_price(av_price);
|
|
||||||
btcPrice.setHigh_price(h_price);
|
|
||||||
btcPrice.setLow_price(l_price);
|
|
||||||
btcPrice.setOpen_price(o_price);
|
|
||||||
btcPrice.setClose_price(c_price);
|
|
||||||
btcPrice.setVolume(volume);
|
|
||||||
|
|
||||||
return btcPrice;
|
|
||||||
// return this.btcPriceRepository.save(btcPrice);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Transactional
|
@Transactional
|
||||||
public void createRecord(CryptoPriceModel cryptoPriceModel, String correlationId, TextMessage message) {
|
public void createRecord(CryptoPriceModel cryptoPriceModel, String correlationId, TextMessage message) {
|
||||||
String syncId = randomUUID().toString();
|
String syncId = randomUUID().toString();
|
||||||
|
|||||||
@ -14,7 +14,6 @@ public class SentimentModel {
|
|||||||
|
|
||||||
@Id
|
@Id
|
||||||
@Column(name = "ID", nullable = false)
|
@Column(name = "ID", nullable = false)
|
||||||
@GeneratedValue(strategy = GenerationType.IDENTITY)
|
|
||||||
private int id;
|
private int id;
|
||||||
|
|
||||||
@Column(name = "timestamp",nullable = false)
|
@Column(name = "timestamp",nullable = false)
|
||||||
|
|||||||
35
src/main/resources/graphql/configQL.graphqls
Normal file
35
src/main/resources/graphql/configQL.graphqls
Normal file
@ -0,0 +1,35 @@
|
|||||||
|
type BtcPrice {
|
||||||
|
id: ID!,
|
||||||
|
timestamp: String!,
|
||||||
|
type: String,
|
||||||
|
average_price: Float!,
|
||||||
|
high_price: Float,
|
||||||
|
low_price: Float,
|
||||||
|
open_price: Float,
|
||||||
|
close_price: Float,
|
||||||
|
volume: Float
|
||||||
|
}
|
||||||
|
|
||||||
|
type sentimentModel {
|
||||||
|
id: ID!,
|
||||||
|
timestamp: String!,
|
||||||
|
rawTweet: String,
|
||||||
|
sentimentScore: Float!,
|
||||||
|
positiveScore: Float,
|
||||||
|
neutralScore: Float,
|
||||||
|
negativeScore: Float,
|
||||||
|
compoundScore: Float!
|
||||||
|
}
|
||||||
|
|
||||||
|
type Query {
|
||||||
|
allPrices(count: Int):[BtcPrice],
|
||||||
|
pricesBetweenCounts(startCount: Int, endCount: Int):[BtcPrice]
|
||||||
|
latest:BtcPrice,
|
||||||
|
priceForCreatedDate(createdDate: String):BtcPrice,
|
||||||
|
priceBetweenDates(startDate: String, endDate: String):[BtcPrice],
|
||||||
|
################################################################
|
||||||
|
currentTweet:sentimentModel,
|
||||||
|
allTweets(count: Int):[sentimentModel],
|
||||||
|
tweetsForDay(startDate: String, endDate: String):[sentimentModel],
|
||||||
|
tweetsForPeriod(startDate: String, endDate: String):[sentimentModel]
|
||||||
|
}
|
||||||
Loading…
x
Reference in New Issue
Block a user