Class: Karst::Access::PopulationPreview

Inherits:
Object
  • Object
show all
Defined in:
lib/karst/access/population_preview.rb

Overview

The explicit, bounded "does this discovered candidate actually work" step -- deliberately separate from Karst::Access::PopulationDiscovery, which never executes anything. Only ever resolves a model/method pair that a given Karst::Access::PopulationDiscovery::Result itself already discovered; a submitted name that is not on that list is rejected without calling anything, so this can never become a general "call any class method by name" endpoint. Every resolution is bounded to PREVIEW_LIMIT rows via Karst::Access::CandidatePopulation.resolve -- never a COUNT, never full materialization.

Constant Summary collapse

PREVIEW_LIMIT =
3
Result =
Value.define(:model_name, :method_name, :resolved, :records, :error)

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(model_name:, method_name:, discovery_result:) ⇒ PopulationPreview

Returns a new instance of PopulationPreview.



26
27
28
29
30
# File 'lib/karst/access/population_preview.rb', line 26

def initialize(model_name:, method_name:, discovery_result:)
  @model_name = model_name.to_s
  @method_name = method_name.to_s
  @discovery_result = discovery_result
end

Class Method Details

.call(model_name:, method_name:, discovery_result:) ⇒ Object



22
23
24
# File 'lib/karst/access/population_preview.rb', line 22

def self.call(model_name:, method_name:, discovery_result:)
  new(model_name: model_name, method_name: method_name, discovery_result: discovery_result).call
end

Instance Method Details

#callObject



32
33
34
35
36
37
38
39
# File 'lib/karst/access/population_preview.rb', line 32

def call
  return unresolved("this is not a discovered candidate") unless known_candidate?

  klass = model_class
  return unresolved("the model could not be resolved") unless klass

  resolve(klass)
end