Module: DataMapper::Constraints::DataObjectsAdapter::SQL

Included in:
Adapters::DataObjectsAdapter
Defined in:
lib/dm-constraints/data_objects_adapter.rb

Instance Method Summary collapse

Instance Method Details

#create_constraints_statements(repository_name, model) ⇒ Object



5
6
7
8
9
10
11
12
13
14
15
16
17
18
# File 'lib/dm-constraints/data_objects_adapter.rb', line 5

def create_constraints_statements(repository_name, model)
  model.many_to_one_relationships.map do |relationship|
    table_name      = model.storage_name(repository_name)
    constraint_name = constraint_name(table_name, relationship.name)
    next if constraint_exists?(table_name, constraint_name)

    keys          = relationship.child_key.map { |key| property_to_column_name(model.repository(repository_name), key, false) }
    parent        = relationship.parent_model
    foreign_table = parent.storage_name(repository_name)
    foreign_keys  = parent.key.map { |key| property_to_column_name(parent.repository(repository_name), key, false) }

    create_constraints_statement(table_name, constraint_name, keys, foreign_table, foreign_keys)
  end.compact
end

#destroy_constraints_statements(repository_name, model) ⇒ Object



20
21
22
23
24
25
26
27
28
# File 'lib/dm-constraints/data_objects_adapter.rb', line 20

def destroy_constraints_statements(repository_name, model)
  model.many_to_one_relationships.map do |relationship|
    table_name      = model.storage_name(repository_name)
    constraint_name = constraint_name(table_name, relationship.name)
    next unless constraint_exists?(table_name, constraint_name)

    destroy_constraints_statement(table_name, constraint_name)
  end.compact
end