Add deposits rebuild endpoint and fix date serialization

Add POST /api/deposits/rebuild to re-project all bank_to_exchange events.
Fix date-off-by-one by converting java.sql.Date to LocalDate via
ReadableColumn and serializing with Jackson JavaTimeModule.
Sort all event/deposit queries by occurred_at, id.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
2026-03-08 17:30:43 +01:00
co-authored by Claude Opus 4.6
parent 96d12f170b
commit 8b5c1faeaa
6 changed files with 82 additions and 7 deletions
+17 -4
View File
@@ -102,7 +102,7 @@ SELECT e.id, e.event_type, e.occurred_at, e.recorded_at,
FROM events e
LEFT JOIN wallets fw ON fw.id = e.from_wallet_id
LEFT JOIN wallets tw ON tw.id = e.to_wallet_id
ORDER BY e.occurred_at DESC
ORDER BY e.occurred_at DESC, e.id DESC
-- :name get-events-by-type :? :*
-- :doc Get events filtered by type
@@ -115,7 +115,7 @@ FROM events e
LEFT JOIN wallets fw ON fw.id = e.from_wallet_id
LEFT JOIN wallets tw ON tw.id = e.to_wallet_id
WHERE e.event_type = :event-type
ORDER BY e.occurred_at DESC
ORDER BY e.occurred_at DESC, e.id DESC
-- :name get-events-by-wallet :? :*
-- :doc Get events involving a specific wallet
@@ -128,7 +128,20 @@ FROM events e
LEFT JOIN wallets fw ON fw.id = e.from_wallet_id
LEFT JOIN wallets tw ON tw.id = e.to_wallet_id
WHERE e.from_wallet_id = :wallet-id OR e.to_wallet_id = :wallet-id
ORDER BY e.occurred_at DESC
ORDER BY e.occurred_at DESC, e.id DESC
-- :name truncate-deposits! :! :n
-- :doc Delete all rows from the deposits read table
TRUNCATE deposits
-- :name get-deposit-events :? :*
-- :doc Get bank_to_exchange events with exchange name, oldest first
SELECT e.id, e.occurred_at, e.fiat_amount, e.fiat_currency,
e.to_wallet_id, tw.name AS exchange, e.note
FROM events e
LEFT JOIN wallets tw ON tw.id = e.to_wallet_id
WHERE e.event_type = 'bank_to_exchange'
ORDER BY e.occurred_at ASC, e.id ASC
-- :name insert-deposit! :! :n
-- :doc Insert a projected deposit row
@@ -140,7 +153,7 @@ VALUES (:event-id, :occurred-at, :exchange, :fiat-amount, :fiat-currency, :amoun
SELECT id, event_id, occurred_at, exchange, fiat_amount, fiat_currency,
amount_eur, amount_dkk, amount_usd, note
FROM deposits
ORDER BY occurred_at DESC
ORDER BY occurred_at DESC, id DESC
-- :name get-wallet-balances :? :*
-- :doc Compute sats balance per wallet from events