Module: Sq::Dbsync::SchemaMaker::Helpers

Defined in:
lib/sq/dbsync/schema_maker.rb

Instance Method Summary collapse

Instance Method Details

#add_column(column_name, db_types, schema) ⇒ Object



74
75
76
77
78
79
80
81
82
83
84
# File 'lib/sq/dbsync/schema_maker.rb', line 74

def add_column(column_name, db_types, schema)
  db_type = db_types[column_name] || [schema[column_name][:db_type]]

  extra = if db_type[0] == :enum
    { elements: db_type[1] }
  else
    {}
  end

  send db_type[0], column_name, extra
end

#add_columns!(table_plan) ⇒ Object



40
41
42
43
44
45
46
47
# File 'lib/sq/dbsync/schema_maker.rb', line 40

def add_columns!(table_plan)
  columns  = table_plan.columns
  db_types = table_plan.db_types || {}
  schema   = table_plan.schema
  columns.each do |column_name|
    add_column(column_name, db_types, schema)
  end
end

#add_indexes!(table_plan) ⇒ Object



49
50
51
52
53
54
55
56
57
# File 'lib/sq/dbsync/schema_maker.rb', line 49

def add_indexes!(table_plan)
  indexes = table_plan.indexes || []

  indexes.each do |index_name, |
    index_columns = [:columns]
    unique        = [:unique] || false
    send(:index, index_columns, name: index_name, unique: unique)
  end
end

#add_primary_key!(table_plan) ⇒ Object



59
60
61
62
63
64
65
66
67
68
69
70
71
# File 'lib/sq/dbsync/schema_maker.rb', line 59

def add_primary_key!(table_plan)
  columns = if table_plan.primary_key
    table_plan.primary_key
  else
    table_plan.schema.select {|col, schema|
      schema[:primary_key]
    }.map(&:first)
  end

  columns = [:id] if columns.empty?

  primary_key(columns)
end