From ae8486da5c542d6af9a2e0f9f7cc39729a055eee Mon Sep 17 00:00:00 2001 From: Kostya Date: Thu, 13 Aug 2026 16:24:24 +0000 Subject: Add service module with stubbed LocalGuessMarketContext GuessMarketContext gained a richer surface (loadEvents/listEvents/ buyShares/closeEvent/account/save-restoreState) backed by new EventDetailDTO, MarketStateDTO, OptionStateDTO and PurchaseReceiptDTO. The old engine-module provider implemented the previous shape and is removed; market.guess.service.LocalGuessMarketContext replaces it as a stub, each method throwing UnsupportedOperationException pending a real implementation. --- .../main/java/market/guess/api/EventDetailDTO.java | 9 +++++++++ .../java/market/guess/api/GuessMarketContext.java | 22 ++++++++++++++++------ .../main/java/market/guess/api/MarketStateDTO.java | 10 ++++++++++ .../main/java/market/guess/api/OptionStateDTO.java | 3 +++ .../java/market/guess/api/PurchaseReceiptDTO.java | 10 ++++++++++ 5 files changed, 48 insertions(+), 6 deletions(-) create mode 100644 api/src/main/java/market/guess/api/EventDetailDTO.java create mode 100644 api/src/main/java/market/guess/api/MarketStateDTO.java create mode 100644 api/src/main/java/market/guess/api/OptionStateDTO.java create mode 100644 api/src/main/java/market/guess/api/PurchaseReceiptDTO.java (limited to 'api/src/main/java/market/guess') diff --git a/api/src/main/java/market/guess/api/EventDetailDTO.java b/api/src/main/java/market/guess/api/EventDetailDTO.java new file mode 100644 index 0000000..893f153 --- /dev/null +++ b/api/src/main/java/market/guess/api/EventDetailDTO.java @@ -0,0 +1,9 @@ +package market.guess.api; + +import java.util.List; + +public record EventDetailDTO( + EventSummaryDTO summary, + MarketStateDTO state, + List history, + String winningOption) {} diff --git a/api/src/main/java/market/guess/api/GuessMarketContext.java b/api/src/main/java/market/guess/api/GuessMarketContext.java index d3954cd..f010e1c 100644 --- a/api/src/main/java/market/guess/api/GuessMarketContext.java +++ b/api/src/main/java/market/guess/api/GuessMarketContext.java @@ -1,17 +1,27 @@ package market.guess.api; +import java.nio.file.Path; import java.util.List; +import market.guess.exception.GuessMarketException; public interface GuessMarketContext { - LoadResultDTO LoadAsync(); + LoadResultDTO loadEvents(Path path); - void SaveChangesAsync(); + List listEvents(); - List GetAllEventsAsync(); + boolean isLoaded(); - void GetEventInfoByIdAsync(); + EventDetailDTO getEvent(String eventKey); - void CreateEventAsync(); + PurchaseReceiptDTO buyShares(String userName, String eventKey, String optionKey, long quantity) + throws GuessMarketException; - void UpdateEventAsync(); + EventDetailDTO closeEvent(String userName, String eventKey, String winningOptionKey) + throws GuessMarketException; + + AccountDTO account(String userName); + + void saveState(Path path) throws GuessMarketException; + + LoadResultDTO restoreState(Path path); } diff --git a/api/src/main/java/market/guess/api/MarketStateDTO.java b/api/src/main/java/market/guess/api/MarketStateDTO.java new file mode 100644 index 0000000..f49b2aa --- /dev/null +++ b/api/src/main/java/market/guess/api/MarketStateDTO.java @@ -0,0 +1,10 @@ +package market.guess.api; + +import java.util.List; + +public record MarketStateDTO( + String eventKey, + MechanismType mechanism, + List options, + String accountBalance, + String commissionCollected) {} diff --git a/api/src/main/java/market/guess/api/OptionStateDTO.java b/api/src/main/java/market/guess/api/OptionStateDTO.java new file mode 100644 index 0000000..c002fdd --- /dev/null +++ b/api/src/main/java/market/guess/api/OptionStateDTO.java @@ -0,0 +1,3 @@ +package market.guess.api; + +public record OptionStateDTO(String optionKey, String name, String price, long sharesOutstanding) {} diff --git a/api/src/main/java/market/guess/api/PurchaseReceiptDTO.java b/api/src/main/java/market/guess/api/PurchaseReceiptDTO.java new file mode 100644 index 0000000..bd5b2f7 --- /dev/null +++ b/api/src/main/java/market/guess/api/PurchaseReceiptDTO.java @@ -0,0 +1,10 @@ +package market.guess.api; + +public record PurchaseReceiptDTO( + String eventKey, + String optionName, + long quantity, + String sharesCost, + String commission, + String totalPaid, + MarketStateDTO stateAfter) {} -- cgit v1.2.3