Class: Dbee::Base

Inherits:
Object
  • Object
show all
Defined in:
lib/dbee/base.rb

Overview

Instead of using the configuration-first approach, you could use this super class for Model declaration.

Class Method Summary collapse

Class Method Details

.association(name, opts = {}) ⇒ Object



21
22
23
24
25
# File 'lib/dbee/base.rb', line 21

def association(name, opts = {})
  associations_by_name[name.to_s] = opts.merge(name: name)

  self
end

.associations_by_nameObject



38
39
40
# File 'lib/dbee/base.rb', line 38

def associations_by_name
  @associations_by_name ||= {}
end

.inherited_associations_by_nameObject



50
51
52
53
54
# File 'lib/dbee/base.rb', line 50

def inherited_associations_by_name
  reversed_subclasses.each_with_object({}) do |subclass, memo|
    memo.merge!(subclass.associations_by_name)
  end
end

.inherited_table_nameObject



46
47
48
# File 'lib/dbee/base.rb', line 46

def inherited_table_name
  subclasses.find(&:table_name?)&.table_name || ''
end

.table(name) ⇒ Object



15
16
17
18
19
# File 'lib/dbee/base.rb', line 15

def table(name)
  @table_name = name.to_s

  self
end

.table_nameObject



34
35
36
# File 'lib/dbee/base.rb', line 34

def table_name
  @table_name || ''
end

.table_name?Boolean

Returns:

  • (Boolean)


42
43
44
# File 'lib/dbee/base.rb', line 42

def table_name?
  !table_name.empty?
end

.to_model(name = nil, constraints = []) ⇒ Object



27
28
29
30
31
32
# File 'lib/dbee/base.rb', line 27

def to_model(name = nil, constraints = [])
  name  = derive_name(name)
  key   = [name, constraints]

  to_models[key] ||= Model.make(model_config(name, constraints))
end