Module: ReeDao::DSL::InstanceMethods

Defined in:
lib/ree_lib/packages/ree_dao/package/ree_dao/dsl.rb

Instance Method Summary collapse

Instance Method Details

#buildObject



18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
# File 'lib/ree_lib/packages/ree_dao/package/ree_dao/dsl.rb', line 18

def build
  dataset_class = db.dataset_class
  klass = self.class.const_set(:Dao, Class.new(dataset_class))
  filters = self.class.instance_variable_get(:@filters) || []

  filters.each do |filter|
    klass.define_method(filter.name, &filter.proc)
  end

  db.dataset_class = klass

  dao = build_dao(
    connection: db,
    table_name: self.class.instance_variable_get(:@table),
    mapper: get_schema_mapper,
    primary_key: self.class.instance_variable_get(:@primary_key),
    default_select_columns: self.class.instance_variable_get(:@default_select_columns),
  )

  db.dataset_class = dataset_class

  dao
end

#get_schema_mapperObject



42
43
44
45
46
47
48
49
50
51
52
# File 'lib/ree_lib/packages/ree_dao/package/ree_dao/dsl.rb', line 42

def get_schema_mapper
  mapper = self
    .class
    .instance_variable_get(:@schema_mapper)

  if mapper.nil?
    raise Ree::Error.new("Dao schema mapper is not set. Use `schema` DSL to define it", :invalid_dsl_usage)
  end

  mapper
end