Class: ClaudeUsage::UsageAggregator
- Inherits:
-
Object
- Object
- ClaudeUsage::UsageAggregator
- Defined in:
- lib/claude_usage/usage_aggregator.rb
Instance Method Summary collapse
- #daily_usage ⇒ Object
-
#initialize(project_name: nil) ⇒ UsageAggregator
constructor
A new instance of UsageAggregator.
- #total_usage ⇒ Object
Constructor Details
#initialize(project_name: nil) ⇒ UsageAggregator
5 6 7 8 9 |
# File 'lib/claude_usage/usage_aggregator.rb', line 5 def initialize(project_name: nil) @project_name = project_name || ClaudeUsage.configuration.resolved_project_name @file_reader = FileReader.new(project_name: @project_name) @cost_calculator = CostCalculator.new end |
Instance Method Details
#daily_usage ⇒ Object
11 12 13 14 15 16 17 18 |
# File 'lib/claude_usage/usage_aggregator.rb', line 11 def daily_usage entries = @file_reader.read_usage_data grouped = entries.group_by { |e| e[:timestamp].to_date } grouped.map do |date, day_entries| aggregate_entries(date, day_entries) end.sort_by { |d| d[:date] }.reverse end |
#total_usage ⇒ Object
20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 |
# File 'lib/claude_usage/usage_aggregator.rb', line 20 def total_usage daily = daily_usage { total_input_tokens: daily.sum { |d| d[:input_tokens] }, total_output_tokens: daily.sum { |d| d[:output_tokens] }, total_cache_creation_tokens: daily.sum { |d| d[:cache_creation_tokens] }, total_cache_read_tokens: daily.sum { |d| d[:cache_read_tokens] }, total_tokens: daily.sum { |d| d[:total_tokens] }, total_cost: daily.sum { |d| d[:cost] }, models_used: daily.flat_map { |d| d[:models_used] }.uniq, first_usage: daily.last&.dig(:date), last_usage: daily.first&.dig(:date), days_active: daily.size } end |