summaryrefslogtreecommitdiffstats
path: root/service
diff options
context:
space:
mode:
authorKostya <mail@sartin.in>2026-08-23 14:05:29 +0000
committerKostya <mail@sartin.in>2026-08-23 14:05:29 +0000
commit843820ea9f357220d69f3795f3289ee41eed355c (patch)
tree57323a2e1cd4d4c0addd57eadc31d0f36c612e96 /service
parentfbfd2e275e9d645e4ec8a1874bc57d98b1c38300 (diff)
downloadguess-market-843820ea9f357220d69f3795f3289ee41eed355c.tar.gz
guess-market-843820ea9f357220d69f3795f3289ee41eed355c.tar.xz
guess-market-843820ea9f357220d69f3795f3289ee41eed355c.zip
model: relocate market DTOs out of the flat api package
Move AccountDTO/MarketDTO/MarketStateDTO/PurchaseReceiptDTO/TradeRowDTO out of the catch-all api package into model.market (and LedgerDTO into model.ledger), matching the existing model.event convention so DTOs live next to the domain they describe rather than in the interface package. Relocate LedgerMapper from mapper.v2 to infrastructure.adapter to match the module's established package layout, and update all call sites and imports accordingly. Also register the ui-desktop module in the build tooling: add it to MODULES, add openjfx to the shipped runtime libs, and generalize package.sh so each executable module (ui-console, ui-desktop) gets its own Main-Class/Class-Path manifest and run script instead of special-casing ui-console. Fold long Class-Path manifest lines at 72 bytes per the JAR spec, since adding ui-desktop's dependencies pushed the line past the limit.
Diffstat (limited to 'service')
-rw-r--r--service/src/main/java/market/guess/service/LocalGuessMarketContext.java4
-rw-r--r--service/src/main/java/market/guess/service/catalog/infrastructure/adapter/LedgerMapper.java10
-rw-r--r--service/src/main/java/market/guess/service/catalog/infrastructure/mapper/v2/LedgerMapper.java11
-rw-r--r--service/src/main/java/market/guess/service/domain/Event.java6
-rw-r--r--service/src/main/java/market/guess/service/domain/Market.java2
-rw-r--r--service/src/test/java/market/guess/service/catalog/infrastructure/adapter/LedgerMapperTest.java (renamed from service/src/test/java/market/guess/service/catalog/infrastructure/mapper/v2/LedgerMapperTest.java)36
6 files changed, 39 insertions, 30 deletions
diff --git a/service/src/main/java/market/guess/service/LocalGuessMarketContext.java b/service/src/main/java/market/guess/service/LocalGuessMarketContext.java
index f04324b..c85dadf 100644
--- a/service/src/main/java/market/guess/service/LocalGuessMarketContext.java
+++ b/service/src/main/java/market/guess/service/LocalGuessMarketContext.java
@@ -3,10 +3,10 @@ package market.guess.service;
3import java.math.BigDecimal; 3import java.math.BigDecimal;
4import java.time.Instant; 4import java.time.Instant;
5import market.guess.api.GuessMarketContext; 5import market.guess.api.GuessMarketContext;
6import market.guess.api.PurchaseReceiptDTO;
7import market.guess.api.Result; 6import market.guess.api.Result;
8import market.guess.api.TradeRowDTO;
9import market.guess.model.event.EventDetailDTO; 7import market.guess.model.event.EventDetailDTO;
8import market.guess.model.market.PurchaseReceiptDTO;
9import market.guess.model.market.TradeRowDTO;
10import market.guess.service.catalog.infrastructure.MarketContext; 10import market.guess.service.catalog.infrastructure.MarketContext;
11import market.guess.service.domain.Order; 11import market.guess.service.domain.Order;
12import market.guess.service.fulfillment.FulfillmentContext; 12import market.guess.service.fulfillment.FulfillmentContext;
diff --git a/service/src/main/java/market/guess/service/catalog/infrastructure/adapter/LedgerMapper.java b/service/src/main/java/market/guess/service/catalog/infrastructure/adapter/LedgerMapper.java
new file mode 100644
index 0000000..5a46540
--- /dev/null
+++ b/service/src/main/java/market/guess/service/catalog/infrastructure/adapter/LedgerMapper.java
@@ -0,0 +1,10 @@
1package market.guess.service.catalog.infrastructure.adapter;
2
3import market.guess.model.ledger.LedgerDTO;
4import market.guess.service.ledger.Ledger;
5import org.mapstruct.Mapper;
6
7@Mapper
8public interface LedgerMapper {
9 LedgerDTO ledgerToLedgerDTO(Ledger ledger);
10}
diff --git a/service/src/main/java/market/guess/service/catalog/infrastructure/mapper/v2/LedgerMapper.java b/service/src/main/java/market/guess/service/catalog/infrastructure/mapper/v2/LedgerMapper.java
deleted file mode 100644
index fe0ea38..0000000
--- a/service/src/main/java/market/guess/service/catalog/infrastructure/mapper/v2/LedgerMapper.java
+++ /dev/null
@@ -1,11 +0,0 @@
1package market.guess.service.catalog.infrastructure.mapper.v2;
2
3import market.guess.api.AccountDTO;
4import market.guess.service.ledger.Ledger;
5import org.mapstruct.Mapper;
6
7@Mapper
8public interface LedgerMapper {
9
10 AccountDTO ledgerToLedgerDTO(Ledger account);
11}
diff --git a/service/src/main/java/market/guess/service/domain/Event.java b/service/src/main/java/market/guess/service/domain/Event.java
index 1e17457..4517a4e 100644
--- a/service/src/main/java/market/guess/service/domain/Event.java
+++ b/service/src/main/java/market/guess/service/domain/Event.java
@@ -4,13 +4,13 @@ import java.math.BigDecimal;
4import java.time.Instant; 4import java.time.Instant;
5import java.util.ArrayList; 5import java.util.ArrayList;
6import java.util.List; 6import java.util.List;
7import market.guess.api.MarketDTO;
8import market.guess.api.MarketStateDTO;
9import market.guess.api.TradeRowDTO;
10import market.guess.model.event.CommissionTiming; 7import market.guess.model.event.CommissionTiming;
11import market.guess.model.event.EventStatus; 8import market.guess.model.event.EventStatus;
12import market.guess.model.event.EventSummaryDTO; 9import market.guess.model.event.EventSummaryDTO;
13import market.guess.model.ledger.LedgerType; 10import market.guess.model.ledger.LedgerType;
11import market.guess.model.market.MarketDTO;
12import market.guess.model.market.MarketStateDTO;
13import market.guess.model.market.TradeRowDTO;
14import market.guess.service.helpers.BigDecimalOptions; 14import market.guess.service.helpers.BigDecimalOptions;
15import market.guess.service.helpers.InstantOptions; 15import market.guess.service.helpers.InstantOptions;
16import market.guess.service.ledger.Ledger; 16import market.guess.service.ledger.Ledger;
diff --git a/service/src/main/java/market/guess/service/domain/Market.java b/service/src/main/java/market/guess/service/domain/Market.java
index 3ff7e2d..c5960e3 100644
--- a/service/src/main/java/market/guess/service/domain/Market.java
+++ b/service/src/main/java/market/guess/service/domain/Market.java
@@ -1,7 +1,7 @@
1package market.guess.service.domain; 1package market.guess.service.domain;
2 2
3import java.math.BigDecimal; 3import java.math.BigDecimal;
4import market.guess.api.MarketDTO; 4import market.guess.model.market.MarketDTO;
5 5
6public final class Market { 6public final class Market {
7 private final String key; 7 private final String key;
diff --git a/service/src/test/java/market/guess/service/catalog/infrastructure/mapper/v2/LedgerMapperTest.java b/service/src/test/java/market/guess/service/catalog/infrastructure/adapter/LedgerMapperTest.java
index 9e00411..976442c 100644
--- a/service/src/test/java/market/guess/service/catalog/infrastructure/mapper/v2/LedgerMapperTest.java
+++ b/service/src/test/java/market/guess/service/catalog/infrastructure/adapter/LedgerMapperTest.java
@@ -1,4 +1,4 @@
1package market.guess.service.catalog.infrastructure.mapper.v2; 1package market.guess.service.catalog.infrastructure.adapter;
2 2
3import static org.junit.Assert.assertEquals; 3import static org.junit.Assert.assertEquals;
4import static org.junit.Assert.assertFalse; 4import static org.junit.Assert.assertFalse;
@@ -8,7 +8,7 @@ import static org.junit.Assert.assertTrue;
8import java.math.BigDecimal; 8import java.math.BigDecimal;
9import java.time.Instant; 9import java.time.Instant;
10import java.util.List; 10import java.util.List;
11import market.guess.api.AccountDTO; 11import market.guess.model.ledger.LedgerDTO;
12import market.guess.model.ledger.LedgerEntryDTO; 12import market.guess.model.ledger.LedgerEntryDTO;
13import market.guess.model.ledger.LedgerType; 13import market.guess.model.ledger.LedgerType;
14import market.guess.service.ledger.Ledger; 14import market.guess.service.ledger.Ledger;
@@ -29,7 +29,7 @@ public class LedgerMapperTest {
29 public void mapsOwnerAndBalanceAsStrings() { 29 public void mapsOwnerAndBalanceAsStrings() {
30 Ledger ledger = new Ledger("alice", new BigDecimal("100")); 30 Ledger ledger = new Ledger("alice", new BigDecimal("100"));
31 31
32 AccountDTO dto = mapper.ledgerToLedgerDTO(ledger); 32 LedgerDTO dto = mapper.ledgerToLedgerDTO(ledger);
33 33
34 assertEquals("alice", dto.owner()); 34 assertEquals("alice", dto.owner());
35 assertEquals("100.00", dto.balance()); 35 assertEquals("100.00", dto.balance());
@@ -39,7 +39,7 @@ public class LedgerMapperTest {
39 public void emptyEntriesMapToEmptyList() { 39 public void emptyEntriesMapToEmptyList() {
40 Ledger ledger = new Ledger("alice", new BigDecimal("0")); 40 Ledger ledger = new Ledger("alice", new BigDecimal("0"));
41 41
42 AccountDTO dto = mapper.ledgerToLedgerDTO(ledger); 42 LedgerDTO dto = mapper.ledgerToLedgerDTO(ledger);
43 43
44 assertTrue(dto.entries().isEmpty()); 44 assertTrue(dto.entries().isEmpty());
45 } 45 }
@@ -49,12 +49,20 @@ public class LedgerMapperTest {
49 Ledger ledger = new Ledger("bob", new BigDecimal("0")); 49 Ledger ledger = new Ledger("bob", new BigDecimal("0"));
50 ledger.record( 50 ledger.record(
51 new LedgerEntry( 51 new LedgerEntry(
52 1, Instant.parse("2026-01-01T00:00:00Z"), LedgerType.DEPOSIT, 52 1,
53 new BigDecimal("50.00"), new BigDecimal("50.00"), "first")); 53 Instant.parse("2026-01-01T00:00:00Z"),
54 LedgerType.DEPOSIT,
55 new BigDecimal("50.00"),
56 new BigDecimal("50.00"),
57 "first"));
54 ledger.record( 58 ledger.record(
55 new LedgerEntry( 59 new LedgerEntry(
56 2, Instant.parse("2026-01-02T00:00:00Z"), LedgerType.PURCHASE, 60 2,
57 new BigDecimal("-20.00"), new BigDecimal("30.00"), "second")); 61 Instant.parse("2026-01-02T00:00:00Z"),
62 LedgerType.PURCHASE,
63 new BigDecimal("-20.00"),
64 new BigDecimal("30.00"),
65 "second"));
58 66
59 List<LedgerEntryDTO> entries = mapper.ledgerToLedgerDTO(ledger).entries(); 67 List<LedgerEntryDTO> entries = mapper.ledgerToLedgerDTO(ledger).entries();
60 68
@@ -84,16 +92,18 @@ public class LedgerMapperTest {
84 92
85 /** 93 /**
86 * LedgerEntry.id/time and Ledger's account-blocked state have no matching AccountDTO/ 94 * LedgerEntry.id/time and Ledger's account-blocked state have no matching AccountDTO/
87 * LedgerEntryDTO source property, so MapStruct leaves them at their Java defaults. This 95 * LedgerEntryDTO source property, so MapStruct leaves them at their Java defaults. This pins that
88 * pins that known gap; once the mapper is taught to fill seq/at/blocked, update these 96 * known gap; once the mapper is taught to fill seq/at/blocked, update these assertions instead of
89 * assertions instead of deleting them. 97 * deleting them.
90 */ 98 */
91 @Test 99 @Test
92 public void unmappedTargetPropertiesFallBackToDefaults() { 100 public void unmappedTargetPropertiesFallBackToDefaults() {
93 Ledger ledger = new Ledger("dave", new BigDecimal("0")); 101 Ledger ledger = new Ledger("dave", new BigDecimal("0"));
94 ledger.record(new LedgerEntry(7, Instant.now(), LedgerType.COMMISSION, BigDecimal.ONE, BigDecimal.ONE, "n")); 102 ledger.record(
103 new LedgerEntry(
104 7, Instant.now(), LedgerType.COMMISSION, BigDecimal.ONE, BigDecimal.ONE, "n"));
95 105
96 AccountDTO dto = mapper.ledgerToLedgerDTO(ledger); 106 LedgerDTO dto = mapper.ledgerToLedgerDTO(ledger);
97 107
98 assertFalse(dto.blocked()); 108 assertFalse(dto.blocked());
99 LedgerEntryDTO entry = dto.entries().get(0); 109 LedgerEntryDTO entry = dto.entries().get(0);