From dda446c906738a43c5a508b0fee7c5329c802508 Mon Sep 17 00:00:00 2001 From: Zach Gollwitzer Date: Sun, 15 Jun 2025 10:01:49 -0400 Subject: [PATCH] Fix private method access --- app/models/account/syncer.rb | 5 ++--- app/models/income_statement.rb | 7 +++++++ 2 files changed, 9 insertions(+), 3 deletions(-) diff --git a/app/models/account/syncer.rb b/app/models/account/syncer.rb index e079dabb..b8a63d41 100644 --- a/app/models/account/syncer.rb +++ b/app/models/account/syncer.rb @@ -18,9 +18,8 @@ class Account::Syncer # TODO: this is a temporary solution to speed up pages. Long term we'll throw a materialized view / pre-computed table # in for family stats. income_statement = IncomeStatement.new(account.family) - income_statement.family_stats - income_statement.category_stats - income_statement.totals # uses default scope internally + Rails.logger.info("Warming IncomeStatement caches") + income_statement.warm_caches! end private diff --git a/app/models/income_statement.rb b/app/models/income_statement.rb index 39e54c54..dc239ee3 100644 --- a/app/models/income_statement.rb +++ b/app/models/income_statement.rb @@ -53,6 +53,13 @@ class IncomeStatement family_stats(interval: interval).find { |stat| stat.classification == "income" }&.median || 0 end + def warm_caches!(interval: "month") + totals + family_stats(interval: interval) + category_stats(interval: interval) + nil + end + private ScopeTotals = Data.define(:transactions_count, :income_money, :expense_money, :missing_exchange_rates?) PeriodTotal = Data.define(:classification, :total, :currency, :missing_exchange_rates?, :category_totals)