diff --git a/cmd/server/main.go b/cmd/server/main.go index 9899419..ea9406a 100644 --- a/cmd/server/main.go +++ b/cmd/server/main.go @@ -39,7 +39,7 @@ func main() { // Start recurring expense scheduler schedulerCtx, schedulerCancel := context.WithCancel(context.Background()) defer schedulerCancel() - sched := scheduler.New(a.RecurringExpenseService, a.RecurringDepositService) + sched := scheduler.New(a.RecurringExpenseService) go sched.Start(schedulerCtx) // Health check bypasses all middleware diff --git a/internal/handler/space.go b/internal/handler/space.go index fe68265..8adf851 100644 --- a/internal/handler/space.go +++ b/internal/handler/space.go @@ -1334,9 +1334,6 @@ func (h *SpaceHandler) AccountsPage(w http.ResponseWriter, r *http.Request) { return } - // Lazy process recurring deposits - h.recurringDepositService.ProcessDueRecurrencesForSpace(spaceID, time.Now()) - accounts, err := h.accountService.GetAccountsForSpace(spaceID) if err != nil { slog.Error("failed to get accounts for space", "error", err, "space_id", spaceID) @@ -1360,12 +1357,6 @@ func (h *SpaceHandler) AccountsPage(w http.ResponseWriter, r *http.Request) { availableBalance := totalBalance - totalAllocated - recurringDeposits, err := h.recurringDepositService.GetRecurringDepositsWithAccountsForSpace(spaceID) - if err != nil { - slog.Error("failed to get recurring deposits", "error", err, "space_id", spaceID) - recurringDeposits = nil - } - transfers, totalPages, err := h.accountService.GetTransfersForSpacePaginated(spaceID, 1) if err != nil { slog.Error("failed to get transfers", "error", err, "space_id", spaceID) @@ -1373,7 +1364,7 @@ func (h *SpaceHandler) AccountsPage(w http.ResponseWriter, r *http.Request) { totalPages = 1 } - ui.Render(w, r, pages.SpaceAccountsPage(space, accounts, totalBalance, availableBalance, recurringDeposits, transfers, 1, totalPages)) + ui.Render(w, r, pages.SpaceAccountsPage(space, accounts, totalBalance, availableBalance, transfers, 1, totalPages)) } func (h *SpaceHandler) CreateAccount(w http.ResponseWriter, r *http.Request) { diff --git a/internal/routes/routes.go b/internal/routes/routes.go index be7f4d9..5606bf4 100644 --- a/internal/routes/routes.go +++ b/internal/routes/routes.go @@ -158,23 +158,6 @@ func SetupRoutes(a *app.App) http.Handler { deleteTransferWithAuth := middleware.RequireAuth(deleteTransferHandler) mux.Handle("DELETE /app/spaces/{spaceID}/accounts/{accountID}/transfers/{transferID}", crudLimiter(deleteTransferWithAuth)) - // Recurring Deposit routes - createRecurringDepositHandler := middleware.RequireSpaceAccess(a.SpaceService)(space.CreateRecurringDeposit) - createRecurringDepositWithAuth := middleware.RequireAuth(createRecurringDepositHandler) - mux.Handle("POST /app/spaces/{spaceID}/accounts/recurring", crudLimiter(createRecurringDepositWithAuth)) - - updateRecurringDepositHandler := middleware.RequireSpaceAccess(a.SpaceService)(space.UpdateRecurringDeposit) - updateRecurringDepositWithAuth := middleware.RequireAuth(updateRecurringDepositHandler) - mux.Handle("PATCH /app/spaces/{spaceID}/accounts/recurring/{recurringDepositID}", crudLimiter(updateRecurringDepositWithAuth)) - - deleteRecurringDepositHandler := middleware.RequireSpaceAccess(a.SpaceService)(space.DeleteRecurringDeposit) - deleteRecurringDepositWithAuth := middleware.RequireAuth(deleteRecurringDepositHandler) - mux.Handle("DELETE /app/spaces/{spaceID}/accounts/recurring/{recurringDepositID}", crudLimiter(deleteRecurringDepositWithAuth)) - - toggleRecurringDepositHandler := middleware.RequireSpaceAccess(a.SpaceService)(space.ToggleRecurringDeposit) - toggleRecurringDepositWithAuth := middleware.RequireAuth(toggleRecurringDepositHandler) - mux.Handle("POST /app/spaces/{spaceID}/accounts/recurring/{recurringDepositID}/toggle", crudLimiter(toggleRecurringDepositWithAuth)) - // Payment Method routes methodsPageHandler := middleware.RequireSpaceAccess(a.SpaceService)(space.PaymentMethodsPage) methodsPageWithAuth := middleware.RequireAuth(methodsPageHandler) diff --git a/internal/scheduler/scheduler.go b/internal/scheduler/scheduler.go index 9c3ede4..6b71c14 100644 --- a/internal/scheduler/scheduler.go +++ b/internal/scheduler/scheduler.go @@ -9,16 +9,14 @@ import ( ) type Scheduler struct { - recurringService *service.RecurringExpenseService - recurringDepositService *service.RecurringDepositService - interval time.Duration + recurringService *service.RecurringExpenseService + interval time.Duration } -func New(recurringService *service.RecurringExpenseService, recurringDepositService *service.RecurringDepositService) *Scheduler { +func New(recurringService *service.RecurringExpenseService) *Scheduler { return &Scheduler{ - recurringService: recurringService, - recurringDepositService: recurringDepositService, - interval: 1 * time.Hour, + recurringService: recurringService, + interval: 1 * time.Hour, } } @@ -47,9 +45,4 @@ func (s *Scheduler) run() { if err := s.recurringService.ProcessDueRecurrences(now); err != nil { slog.Error("scheduler: failed to process recurring expenses", "error", err) } - - slog.Info("scheduler: processing due recurring deposits") - if err := s.recurringDepositService.ProcessDueRecurrences(now); err != nil { - slog.Error("scheduler: failed to process recurring deposits", "error", err) - } } diff --git a/internal/ui/pages/app_space_accounts.templ b/internal/ui/pages/app_space_accounts.templ index 92b7f81..530172e 100644 --- a/internal/ui/pages/app_space_accounts.templ +++ b/internal/ui/pages/app_space_accounts.templ @@ -8,7 +8,7 @@ import ( "git.juancwu.dev/juancwu/budgit/internal/ui/layouts" ) -templ SpaceAccountsPage(space *model.Space, accounts []model.MoneyAccountWithBalance, totalBalance int, availableBalance int, recurringDeposits []*model.RecurringDepositWithAccount, transfers []*model.AccountTransferWithAccount, currentPage, totalPages int) { +templ SpaceAccountsPage(space *model.Space, accounts []model.MoneyAccountWithBalance, totalBalance int, availableBalance int, transfers []*model.AccountTransferWithAccount, currentPage, totalPages int) { @layouts.Space("Accounts", space) {
@@ -41,7 +41,6 @@ templ SpaceAccountsPage(space *model.Space, accounts []model.MoneyAccountWithBal @moneyaccount.AccountCard(space.ID, &acct) }
- @moneyaccount.RecurringDepositsSection(space.ID, recurringDeposits, accounts) @moneyaccount.TransferHistorySection(space.ID, transfers, currentPage, totalPages)
}