-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
- Loading branch information
There are no files selected for viewing
Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.
Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.
Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.
Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.
Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.
Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.
Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.
Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.
Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.
Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,6 @@ | ||
#Tue Jul 30 11:08:16 GMT 2024 | ||
distributionBase=GRADLE_USER_HOME | ||
distributionPath=wrapper/dists | ||
distributionUrl=https\://services.gradle.org/distributions/gradle-8.5-bin.zip | ||
zipStoreBase=GRADLE_USER_HOME | ||
zipStorePath=wrapper/dists |
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,16 @@ | ||
package com.joe.trading.marketdataservice.DAO; | ||
|
||
import com.joe.trading.marketdataservice.model.MarketData; | ||
|
||
import java.util.Map; | ||
|
||
public interface MarketDataDAO { | ||
|
||
void saveMarketData(MarketData data, String ticker); | ||
void saveAll(Map<String, MarketData> marketDataMap); | ||
void updateMarketData(MarketData data); | ||
void deleteMarketData(String ticker); | ||
void clearCache(); | ||
MarketData getMarketData(String ticker); | ||
Map<String, MarketData> getAll(); | ||
} |
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,56 @@ | ||
package com.joe.trading.marketdataservice.DAO; | ||
|
||
import com.joe.trading.marketdataservice.model.MarketData; | ||
import org.springframework.beans.factory.annotation.Autowired; | ||
import org.springframework.data.redis.core.HashOperations; | ||
import org.springframework.data.redis.core.RedisTemplate; | ||
import org.springframework.stereotype.Repository; | ||
|
||
import java.util.Map; | ||
|
||
@Repository | ||
public class MarketDataRepo implements MarketDataDAO{ | ||
private final String hashReference = "JOEMarketData"; | ||
|
||
private final HashOperations<String, String, MarketData> hashOperations; | ||
|
||
@Autowired | ||
public MarketDataRepo(RedisTemplate<String, MarketData> redisTemplate){ | ||
this.hashOperations = redisTemplate.opsForHash(); | ||
} | ||
|
||
@Override | ||
public void saveMarketData(MarketData data, String ticker) { | ||
this.hashOperations.putIfAbsent(hashReference, ticker, data); | ||
} | ||
|
||
@Override | ||
public void saveAll(Map<String, MarketData> marketDataMap) { | ||
this.hashOperations.putAll(hashReference, marketDataMap); | ||
} | ||
|
||
@Override | ||
public void updateMarketData(MarketData data) { | ||
this.hashOperations.put(hashReference, data.getTICKER(), data); | ||
} | ||
|
||
@Override | ||
public void deleteMarketData(String ticker) { | ||
this.hashOperations.delete(hashReference, ticker); | ||
} | ||
|
||
@Override | ||
public MarketData getMarketData(String ticker) { | ||
return this.hashOperations.get(hashReference, ticker); | ||
} | ||
|
||
@Override | ||
public Map<String, MarketData> getAll() { | ||
return this.hashOperations.entries(hashReference); | ||
} | ||
|
||
@Override | ||
public void clearCache(){ | ||
this.getAll().forEach((ticker, data) -> this.deleteMarketData(ticker)); | ||
} | ||
} |
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,13 +1,39 @@ | ||
package com.joe.trading.marketdataservice; | ||
|
||
import com.joe.trading.marketdataservice.model.MarketData; | ||
import com.joe.trading.marketdataservice.services.MarketDataService; | ||
import org.springframework.beans.factory.annotation.Autowired; | ||
import org.springframework.boot.CommandLineRunner; | ||
import org.springframework.boot.SpringApplication; | ||
import org.springframework.boot.autoconfigure.SpringBootApplication; | ||
|
||
import java.util.ArrayList; | ||
import java.util.List; | ||
|
||
@SpringBootApplication | ||
public class MarketDataServiceApplication { | ||
|
||
private final MarketDataService mdService; | ||
|
||
@Autowired | ||
public MarketDataServiceApplication(MarketDataService mdService) { | ||
this.mdService = mdService; | ||
} | ||
|
||
public static void main(String[] args) { | ||
SpringApplication.run(MarketDataServiceApplication.class, args); | ||
} | ||
|
||
public CommandLineRunner startupMDRunner(){ | ||
|
||
return args -> { | ||
List<MarketData> marketDataList = new ArrayList<>(); | ||
// get market data from Exchange 1; | ||
marketDataList.addAll(mdService.getAllMarketDataFromExchange("exchange1")); | ||
// get market data from Exchange 2; | ||
marketDataList.addAll(mdService.getAllMarketDataFromExchange("exchange2")) | ||
|
||
}; | ||
} | ||
|
||
} |
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,34 @@ | ||
package com.joe.trading.marketdataservice.model; | ||
|
||
import lombok.Getter; | ||
import lombok.NoArgsConstructor; | ||
import lombok.Setter; | ||
|
||
@Getter | ||
@Setter | ||
@NoArgsConstructor | ||
public class MarketData { | ||
private Double LAST_TRADED_PRICE; | ||
private String TICKER; | ||
private Integer SELL_LIMIT; | ||
private Double BID_PRICE; | ||
private Integer BUY_LIMIT; | ||
|
||
private Double ASK_PRICE; | ||
private Double MAX_PRICE_SHIFT; | ||
private String EXCHANGE; | ||
|
||
@Override | ||
public String toString() { | ||
return "MarketData{" + | ||
"LAST_TRADED_PRICE=" + LAST_TRADED_PRICE + | ||
", TICKER='" + TICKER + '\'' + | ||
", SELL_LIMIT=" + SELL_LIMIT + | ||
", BID_PRICE=" + BID_PRICE + | ||
", BUY_LIMIT=" + BUY_LIMIT + | ||
", ASK_PRICE=" + ASK_PRICE + | ||
", MAX_PRICE_SHIFT=" + MAX_PRICE_SHIFT + | ||
", EXCHANGE='" + EXCHANGE + '\'' + | ||
'}'; | ||
} | ||
} |