Class: Ace::Support::Models::Molecules::DiffGenerator

Inherits:
Object
  • Object
show all
Defined in:
lib/ace/support/models/molecules/diff_generator.rb

Overview

Generates diff between cached API versions

Constant Summary collapse

TRACKED_FIELDS =
%w[name cost limit status modalities].freeze

Instance Method Summary collapse

Constructor Details

#initialize(cache_manager: nil) ⇒ DiffGenerator

Initialize diff generator

Parameters:

  • cache_manager (CacheManager, nil) (defaults to: nil)

    Cache manager instance



15
16
17
# File 'lib/ace/support/models/molecules/diff_generator.rb', line 15

def initialize(cache_manager: nil)
  @cache_manager = cache_manager || CacheManager.new
end

Instance Method Details

#generateModels::DiffResult

Generate diff between current and previous cache

Returns:



21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
# File 'lib/ace/support/models/molecules/diff_generator.rb', line 21

def generate
  current = @cache_manager.read
  previous = @cache_manager.read_previous

  unless current
    return Models::DiffResult.new(
      current_sync_at: Time.now
    )
  end

  unless previous
    # No previous - everything is "new"
    all_models = extract_all_models(current)
    return Models::DiffResult.new(
      added_models: all_models,
      added_providers: current.keys,
      current_sync_at: @cache_manager.last_sync_at
    )
  end

  compare(previous, current)
end