Module: Trevl::DataSource

Defined in:
lib/trevl/data_source.rb,
lib/trevl/data_source/api.rb,
lib/trevl/data_source/base.rb,
lib/trevl/data_source/cube.rb,
lib/trevl/data_source/static.rb

Defined Under Namespace

Classes: Api, Base, Cube, Static

Class Method Summary collapse

Class Method Details

.allObject



18
19
20
21
22
23
# File 'lib/trevl/data_source.rb', line 18

def all
  registry.map do |name, source|
    obj = source.is_a?(Class) ? source : source.class
    {name: name, type: obj.name&.split("::")&.last || obj.to_s, source: source}
  end
end

.for(name) ⇒ Object

Raises:



10
11
12
13
14
15
16
# File 'lib/trevl/data_source.rb', line 10

def for(name, **)
  key = name.to_s.strip.downcase
  source = registry[key]
  raise DataSourceError, "No data source registered for '#{name}'. Available: #{registry.keys.join(", ")}." unless source

  source.is_a?(Class) ? source.new(**) : source
end

.namesObject



25
26
27
# File 'lib/trevl/data_source.rb', line 25

def names
  registry.keys
end

.register(name, source) ⇒ Object



6
7
8
# File 'lib/trevl/data_source.rb', line 6

def register(name, source)
  registry[name.to_s.strip.downcase] = source
end

.registryObject



29
30
31
# File 'lib/trevl/data_source.rb', line 29

def registry
  @registry ||= {}
end

.reset!Object



33
34
35
# File 'lib/trevl/data_source.rb', line 33

def reset!
  @registry = {}
end