Skip to content

  • Projects
  • Groups
  • Snippets
  • Help
    • Loading...
    • Help
    • Submit feedback
    • Contribute to GitLab
  • Sign in
F
finwise-miniapp-be
  • Project
    • Project
    • Details
    • Activity
    • Releases
    • Cycle Analytics
  • Repository
    • Repository
    • Files
    • Commits
    • Branches
    • Tags
    • Contributors
    • Graph
    • Compare
    • Charts
  • Issues 0
    • Issues 0
    • List
    • Board
    • Labels
    • Milestones
  • Merge Requests 0
    • Merge Requests 0
  • CI / CD
    • CI / CD
    • Pipelines
    • Jobs
    • Schedules
    • Charts
  • Wiki
    • Wiki
  • Snippets
    • Snippets
  • Members
    • Members
  • Collapse sidebar
  • Activity
  • Graph
  • Charts
  • Create a new issue
  • Jobs
  • Commits
  • Issue Boards
  • ThinhNC
  • finwise-miniapp-be
  • Merge Requests
  • !31

Merged
Opened Aug 20, 2026 by ThinhNC@ThinhNC
  • Report abuse
Report abuse

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 RecurringTransactionSchedule and RecurringTransactionOccurrence models with support for DAILY, WEEKLY, MONTHLY, and YEARLY intervals.
  • Added RecurringMissedPolicy (SKIP, CATCH_UP) and RecurringOccurrenceStatus (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 Serializable transactions.
  • Soft-deletion support preserving all generated historical transactions.

3. Worker Integration & Subscription Conversion

  • Background Worker: Integrated RecurringTransactionService.processDue into NotificationWorker with distributed locking (LockService) and batch limits.
  • Subscription API: Added POST /api/v1/subscriptions/convert-to-recurring-transaction with validation.

4. Wallet & Infrastructure Updates

  • Enabled balance updates in updateWalletSchema and UpdateWalletDto.
  • Updated Swagger documentation with recurring transaction schemas and tags.
  • Updated Cloudflare Hyperdrive connection config in wrangler.toml to Supabase connection pooler.

Check out, review, and merge locally

Step 1. Fetch and check out the branch for this merge request

git fetch origin
git checkout -b feat/recurring-transactions-engine-and-wallet-updates origin/feat/recurring-transactions-engine-and-wallet-updates

Step 2. Review the changes locally

Step 3. Merge the branch and fix any conflicts that come up

git fetch origin
git checkout origin/develop
git merge --no-ff feat/recurring-transactions-engine-and-wallet-updates

Step 4. Push the result of the merge to GitLab

git push origin develop

Note that pushing to GitLab requires write access to this repository.

Tip: You can also checkout merge requests locally by following these guidelines.

  • Discussion 0
  • Commits 1
  • Changes 25
Assignee
No assignee
Assign to
None
Milestone
None
Assign milestone
Time tracking
0
Labels
None
Assign labels
  • View project labels
Reference: ThinhNC/finwise-miniapp-be!31

Revert this merge request

This will create a new commit in order to revert the existing changes.

Switch branch
Cancel
A new branch will be created in your fork and a new merge request will be started.

Cherry-pick this merge request

Switch branch
Cancel
A new branch will be created in your fork and a new merge request will be started.