Class: DataKeeper::DefinitionBuilder

Inherits:
Object
  • Object
show all
Defined in:
lib/data_keeper/definition.rb

Instance Method Summary collapse

Constructor Details

#initialize(type, definition_block) ⇒ DefinitionBuilder

Returns a new instance of DefinitionBuilder.

Raises:



29
30
31
32
33
34
35
36
37
# File 'lib/data_keeper/definition.rb', line 29

def initialize(type, definition_block)
  raise InvalidDumpType, "Invalid type! use :partial or :full" unless [:partial, :full].include?(type)

  @type = type
  @tables = []
  @raw_sqls = {}
  @definition_block = definition_block
  @on_after_load_block = nil
end

Instance Method Details

#evaluate!Object



39
40
41
42
43
44
45
46
# File 'lib/data_keeper/definition.rb', line 39

def evaluate!
  @definition ||=
    begin
      instance_eval(&@definition_block) if @definition_block

      Definition.new(@type, @tables, @raw_sqls, @on_after_load_block)
    end
end

#on_after_load(&block) ⇒ Object



60
61
62
# File 'lib/data_keeper/definition.rb', line 60

def on_after_load(&block)
  @on_after_load_block = block
end

#sql(table, name, &block) ⇒ Object



54
55
56
57
58
# File 'lib/data_keeper/definition.rb', line 54

def sql(table, name, &block)
  raise InvalidDumpDefinition if @type == :full
  raise(InvalidDumpDefinition, "sql already defined") if @raw_sqls.key?(name)
  @raw_sqls[name] = [table, block]
end

#table(name) ⇒ Object



48
49
50
51
52
# File 'lib/data_keeper/definition.rb', line 48

def table(name)
  raise InvalidDumpDefinition if @type == :full
  raise(InvalidDumpDefinition, "table already defined") if @tables.include?(name)
  @tables << name
end