feat(recurring): implement recurring transaction engine, worker execution, and...
Summary
This PR implements the backend engine for Recurring Transactions (Upgrade 6), integrates automated background execution into the worker system, enables subscription-to-recurring conversion, and allows wallet balance modifications.
Key Changes
1. Database Schema & Migrations (prisma/schema.prisma)
- Added
RecurringTransactionScheduleandRecurringTransactionOccurrencemodels with support forDAILY,WEEKLY,MONTHLY, andYEARLYintervals. - Added
RecurringMissedPolicy(SKIP,CATCH_UP) andRecurringOccurrenceStatus(PENDING,SUCCESS,FAILED,SKIPPED). - Added composite unique constraint
(scheduleId, scheduledFor)to guarantee strict idempotency. - Created migration
20260820120000_add_recurring_transactions.
2. Recurring Transaction Engine (src/modules/recurring-transactions/)
- Implemented complete CRUD, pause/resume, upcoming date preview, and occurrence history endpoints.
- Atomic execution of transaction creation and wallet balance adjustment inside
Serializabletransactions. - Soft-deletion support preserving all generated historical transactions.
3. Worker Integration & Subscription Conversion
-
Background Worker: Integrated
RecurringTransactionService.processDueintoNotificationWorkerwith distributed locking (LockService) and batch limits. -
Subscription API: Added
POST /api/v1/subscriptions/convert-to-recurring-transactionwith validation.
4. Wallet & Infrastructure Updates
- Enabled
balanceupdates inupdateWalletSchemaandUpdateWalletDto. - Updated Swagger documentation with recurring transaction schemas and tags.
- Updated Cloudflare Hyperdrive connection config in
wrangler.tomlto Supabase connection pooler.