Module: Sq::Dbsync::SchemaMaker::Helpers
- Defined in:
- lib/sq/dbsync/schema_maker.rb
Instance Method Summary collapse
- #add_column(column_name, db_types, schema) ⇒ Object
- #add_columns!(table_plan) ⇒ Object
- #add_indexes!(table_plan) ⇒ Object
- #add_primary_key!(table_plan) ⇒ Object
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 |