aboutsummaryrefslogtreecommitdiffstats
path: root/api/src/main/java
diff options
context:
space:
mode:
authorKostya <mail@sartin.in>2026-08-13 15:39:56 +0000
committerKostya <mail@sartin.in>2026-08-13 15:39:56 +0000
commit9dd3ec7ff11839503e4d5ef6639d0faa21403095 (patch)
tree925fb81222c055404b63cc8eed8ef7ae710ec5be /api/src/main/java
parentc58e65ad4fba4b964d26dcf11d6163465fc3cfd3 (diff)
downloadguess-market-9dd3ec7ff11839503e4d5ef6639d0faa21403095.tar.gz
guess-market-9dd3ec7ff11839503e4d5ef6639d0faa21403095.tar.xz
guess-market-9dd3ec7ff11839503e4d5ef6639d0faa21403095.zip
Move I/O provider abstraction to ui-console, add ledger/account/problem DTOs
InputProvider/OutputProvider were api-layer types only ever implemented by the console UI; relocate them there. Drop the unused GuessMarketEngine/LocalGuessMarketService pair, flesh out LoadResultDTO with success/failure variants, and make LocalGuessMarketContext.LoadAsync report real outcomes instead of an empty placeholder.
Diffstat (limited to 'api/src/main/java')
-rw-r--r--api/src/main/java/market/guess/InputProvider.java5
-rw-r--r--api/src/main/java/market/guess/InputProviderFactory.java5
-rw-r--r--api/src/main/java/market/guess/OutputProvider.java7
-rw-r--r--api/src/main/java/market/guess/OutputProviderFactory.java5
-rw-r--r--api/src/main/java/market/guess/api/AccountDTO.java6
-rw-r--r--api/src/main/java/market/guess/api/GuessMarketContext.java3
-rw-r--r--api/src/main/java/market/guess/api/GuessMarketEngine.java7
-rw-r--r--api/src/main/java/market/guess/api/LedgerEntryDTO.java4
-rw-r--r--api/src/main/java/market/guess/api/LedgerType.java10
-rw-r--r--api/src/main/java/market/guess/api/LoadResultDTO.java14
-rw-r--r--api/src/main/java/market/guess/api/ProblemDTO.java3
11 files changed, 37 insertions, 32 deletions
diff --git a/api/src/main/java/market/guess/InputProvider.java b/api/src/main/java/market/guess/InputProvider.java
deleted file mode 100644
index be7372b..0000000
--- a/api/src/main/java/market/guess/InputProvider.java
+++ /dev/null
@@ -1,5 +0,0 @@
1package market.guess;
2
3public interface InputProvider extends AutoCloseable {
4 int nextInt();
5}
diff --git a/api/src/main/java/market/guess/InputProviderFactory.java b/api/src/main/java/market/guess/InputProviderFactory.java
deleted file mode 100644
index 6801103..0000000
--- a/api/src/main/java/market/guess/InputProviderFactory.java
+++ /dev/null
@@ -1,5 +0,0 @@
1package market.guess;
2
3public interface InputProviderFactory {
4 InputProvider create();
5}
diff --git a/api/src/main/java/market/guess/OutputProvider.java b/api/src/main/java/market/guess/OutputProvider.java
deleted file mode 100644
index 774408e..0000000
--- a/api/src/main/java/market/guess/OutputProvider.java
+++ /dev/null
@@ -1,7 +0,0 @@
1package market.guess;
2
3public interface OutputProvider {
4 void print(Object object);
5
6 void println(Object object);
7}
diff --git a/api/src/main/java/market/guess/OutputProviderFactory.java b/api/src/main/java/market/guess/OutputProviderFactory.java
deleted file mode 100644
index b4eb7f5..0000000
--- a/api/src/main/java/market/guess/OutputProviderFactory.java
+++ /dev/null
@@ -1,5 +0,0 @@
1package market.guess;
2
3public interface OutputProviderFactory {
4 OutputProvider create();
5}
diff --git a/api/src/main/java/market/guess/api/AccountDTO.java b/api/src/main/java/market/guess/api/AccountDTO.java
new file mode 100644
index 0000000..8e7123e
--- /dev/null
+++ b/api/src/main/java/market/guess/api/AccountDTO.java
@@ -0,0 +1,6 @@
1package market.guess.api;
2
3import java.util.List;
4
5public record AccountDTO(
6 String owner, String balance, boolean blocked, List<LedgerEntryDTO> entries) {}
diff --git a/api/src/main/java/market/guess/api/GuessMarketContext.java b/api/src/main/java/market/guess/api/GuessMarketContext.java
index 12ffbeb..2d7af4c 100644
--- a/api/src/main/java/market/guess/api/GuessMarketContext.java
+++ b/api/src/main/java/market/guess/api/GuessMarketContext.java
@@ -1,10 +1,9 @@
1package market.guess.api; 1package market.guess.api;
2 2
3import java.util.List; 3import java.util.List;
4import java.util.concurrent.CompletableFuture;
5 4
6public interface GuessMarketContext { 5public interface GuessMarketContext {
7 CompletableFuture<LoadResultDTO> LoadAsync(); 6 LoadResultDTO LoadAsync();
8 7
9 void SaveChangesAsync(); 8 void SaveChangesAsync();
10 9
diff --git a/api/src/main/java/market/guess/api/GuessMarketEngine.java b/api/src/main/java/market/guess/api/GuessMarketEngine.java
deleted file mode 100644
index b6d44a4..0000000
--- a/api/src/main/java/market/guess/api/GuessMarketEngine.java
+++ /dev/null
@@ -1,7 +0,0 @@
1package market.guess.api;
2
3import java.util.concurrent.CompletableFuture;
4
5public interface GuessMarketEngine {
6 CompletableFuture<LoadResultDTO> loadEvents();
7}
diff --git a/api/src/main/java/market/guess/api/LedgerEntryDTO.java b/api/src/main/java/market/guess/api/LedgerEntryDTO.java
new file mode 100644
index 0000000..b8f994c
--- /dev/null
+++ b/api/src/main/java/market/guess/api/LedgerEntryDTO.java
@@ -0,0 +1,4 @@
1package market.guess.api;
2
3public record LedgerEntryDTO(
4 long seq, String at, LedgerType type, String amount, String balanceAfter, String note) {}
diff --git a/api/src/main/java/market/guess/api/LedgerType.java b/api/src/main/java/market/guess/api/LedgerType.java
new file mode 100644
index 0000000..3402b84
--- /dev/null
+++ b/api/src/main/java/market/guess/api/LedgerType.java
@@ -0,0 +1,10 @@
1package market.guess.api;
2
3public enum LedgerType {
4 SUBSIDY,
5 PURCHASE,
6 COMMISSION,
7 PAYOUT,
8 REFUND,
9 DEPOSIT
10}
diff --git a/api/src/main/java/market/guess/api/LoadResultDTO.java b/api/src/main/java/market/guess/api/LoadResultDTO.java
index cf3630b..8cae3c0 100644
--- a/api/src/main/java/market/guess/api/LoadResultDTO.java
+++ b/api/src/main/java/market/guess/api/LoadResultDTO.java
@@ -1,3 +1,15 @@
1package market.guess.api; 1package market.guess.api;
2 2
3public record LoadResultDTO() {} 3import java.util.List;
4
5public record LoadResultDTO(
6 boolean success, String source, int eventsLoaded, List<ProblemDTO> issues) {
7
8 public static LoadResultDTO success(String sourceLabel, int eventsLoaded) {
9 return new LoadResultDTO(true, sourceLabel, eventsLoaded, List.of());
10 }
11
12 public static LoadResultDTO failure(String sourceLabel, List<ProblemDTO> problems) {
13 return new LoadResultDTO(false, sourceLabel, 0, List.copyOf(problems));
14 }
15}
diff --git a/api/src/main/java/market/guess/api/ProblemDTO.java b/api/src/main/java/market/guess/api/ProblemDTO.java
new file mode 100644
index 0000000..682372b
--- /dev/null
+++ b/api/src/main/java/market/guess/api/ProblemDTO.java
@@ -0,0 +1,3 @@
1package market.guess.api;
2
3public record ProblemDTO(String code, String humanizedMessage, String location) {}