58 lines
3.0 KiB
Markdown
58 lines
3.0 KiB
Markdown
# API Phase 4 Move Log
|
|
|
|
Date: 2026-03-17
|
|
Scope: Move `transactions` endpoints out of `api/src/server.ts` into a dedicated route module.
|
|
|
|
## Route Registration Changes
|
|
- Added transactions route import in [server.ts](/mnt/c/Users/jholt/clone-test/SkyMoney/api/src/server.ts:19)
|
|
- Registered transactions routes in [server.ts](/mnt/c/Users/jholt/clone-test/SkyMoney/api/src/server.ts:938)
|
|
- New canonical route module: [transactions.ts](/mnt/c/Users/jholt/clone-test/SkyMoney/api/src/routes/transactions.ts:38)
|
|
- Removed inline transactions route blocks from `server.ts` to avoid duplicate registration:
|
|
- `POST /transactions` block
|
|
- `GET/PATCH/DELETE /transactions` block
|
|
|
|
## Endpoint Movements
|
|
|
|
1. `POST /transactions`
|
|
- Moved to [transactions.ts](/mnt/c/Users/jholt/clone-test/SkyMoney/api/src/routes/transactions.ts:42)
|
|
- References:
|
|
- [useTransactions.ts](/mnt/c/Users/jholt/clone-test/SkyMoney/web/src/hooks/useTransactions.ts:34)
|
|
- [payment-rollover.test.ts](/mnt/c/Users/jholt/clone-test/SkyMoney/api/tests/payment-rollover.test.ts:42)
|
|
- [transactions.test.ts](/mnt/c/Users/jholt/clone-test/SkyMoney/api/tests/transactions.test.ts:139)
|
|
|
|
2. `GET /transactions`
|
|
- Moved to [transactions.ts](/mnt/c/Users/jholt/clone-test/SkyMoney/api/src/routes/transactions.ts:465)
|
|
- References:
|
|
- [useTransactionsQuery.tsx](/mnt/c/Users/jholt/clone-test/SkyMoney/web/src/hooks/useTransactionsQuery.tsx:41)
|
|
- [transactions.ts](/mnt/c/Users/jholt/clone-test/SkyMoney/web/src/api/transactions.ts:27)
|
|
- [transactions.test.ts](/mnt/c/Users/jholt/clone-test/SkyMoney/api/tests/transactions.test.ts:71)
|
|
|
|
3. `PATCH /transactions/:id`
|
|
- Moved to [transactions.ts](/mnt/c/Users/jholt/clone-test/SkyMoney/api/src/routes/transactions.ts:601)
|
|
- References:
|
|
- [useTransactions.ts](/mnt/c/Users/jholt/clone-test/SkyMoney/web/src/hooks/useTransactions.ts:63)
|
|
- [transactions.test.ts](/mnt/c/Users/jholt/clone-test/SkyMoney/api/tests/transactions.test.ts:189)
|
|
|
|
4. `DELETE /transactions/:id`
|
|
- Moved to [transactions.ts](/mnt/c/Users/jholt/clone-test/SkyMoney/api/src/routes/transactions.ts:659)
|
|
- References:
|
|
- [useTransactions.ts](/mnt/c/Users/jholt/clone-test/SkyMoney/web/src/hooks/useTransactions.ts:75)
|
|
- [SpendPage.tsx](/mnt/c/Users/jholt/clone-test/SkyMoney/web/src/pages/SpendPage.tsx:296)
|
|
|
|
## Helper Ownership in Phase 4
|
|
- Shared helper injection from `server.ts`:
|
|
- `mutationRateLimit`
|
|
- `computeDepositShares`
|
|
- `computeWithdrawShares`
|
|
- `computeOverdraftShares`
|
|
- `calculateNextDueDate`
|
|
- `toBig`
|
|
- `parseCurrencyToCents`
|
|
- Route-local helper:
|
|
- `isDate` query validator
|
|
|
|
## Follow-ups To Revisit
|
|
1. Split `POST /transactions` into smaller internal handlers (`variable_spend` vs `fixed_payment`) after endpoint migration phases complete.
|
|
2. Replace broad `any` shapes in transaction where-clause/order composition with a typed query builder to reduce regression risk.
|
|
3. Reconcile test expectations for plan overdraft behavior (`OVERDRAFT_PLAN` vs current fixed-payment reconciliation semantics) before behavior changes in later phases.
|