Module: Datasource::Adapters::Sequel::ScopeExtensions

Defined in:
lib/datasource/adapters/sequel.rb

Class Method Summary collapse

Instance Method Summary collapse

Class Method Details

.extended(mod) ⇒ Object



7
8
9
10
11
# File 'lib/datasource/adapters/sequel.rb', line 7

def self.extended(mod)
  mod.instance_exec do
    @datasource_info ||= { select: [], params: [] }
  end
end

Instance Method Details

#datasource_params(*args) ⇒ Object



23
24
25
26
# File 'lib/datasource/adapters/sequel.rb', line 23

def datasource_params(*args)
  @datasource_info[:params] += args
  self
end

#datasource_select(*args) ⇒ Object



18
19
20
21
# File 'lib/datasource/adapters/sequel.rb', line 18

def datasource_select(*args)
  @datasource_info[:select] += args
  self
end

#datasource_set(hash) ⇒ Object



13
14
15
16
# File 'lib/datasource/adapters/sequel.rb', line 13

def datasource_set(hash)
  @datasource_info.merge!(hash)
  self
end

#each(&block) ⇒ Object



42
43
44
45
46
47
48
49
50
# File 'lib/datasource/adapters/sequel.rb', line 42

def each(&block)
  if @datasource_info[:datasource_class]
    datasource = get_datasource

    datasource.results.each(&block)
  else
    super
  end
end

#get_datasourceObject



28
29
30
31
32
33
34
35
36
37
38
39
40
# File 'lib/datasource/adapters/sequel.rb', line 28

def get_datasource
  klass = @datasource_info[:datasource_class]
  datasource = klass.new(self)
  datasource.select(*Array(@datasource_info[:select]))
  datasource.params(*@datasource_info[:params])
  if @datasource_info[:serializer_class]
    select = []
    Datasource::Base.consumer_adapter.to_datasource_select(select, klass.orm_klass, @datasource_info[:serializer_class], nil, datasource.adapter)

    datasource.select(*select)
  end
  datasource
end