Module: DBViewCTI::ConnectionAdapters::SchemaStatements
- Defined in:
- lib/db_view_cti/connection_adapters/schema_statements.rb
Instance Method Summary collapse
- #cti_create_view(class_name, options = {}) ⇒ Object
- #cti_drop_view(class_name, options = {}) ⇒ Object
-
#cti_execute_sql(sql) ⇒ Object
Needed since sqlite only executes the first statement in a string containing multiple statements.
-
#cti_recreate_views_after_change_to(class_name, options = {}) ⇒ Object
use with block in up/down methods.
- #cti_view_exists?(class_name) ⇒ Boolean
Instance Method Details
#cti_create_view(class_name, options = {}) ⇒ Object
5 6 7 8 9 |
# File 'lib/db_view_cti/connection_adapters/schema_statements.rb', line 5 def cti_create_view(class_name, = {}) generator = DBViewCTI::SQLGeneration::Migration::Factory.generator(class_name) cti_execute_sql(generator.create_view_sql) cti_execute_sql(generator.create_trigger_sql) end |
#cti_drop_view(class_name, options = {}) ⇒ Object
11 12 13 14 15 |
# File 'lib/db_view_cti/connection_adapters/schema_statements.rb', line 11 def cti_drop_view(class_name, = {}) generator = DBViewCTI::SQLGeneration::Migration::Factory.generator(class_name) cti_execute_sql(generator.drop_trigger_sql) cti_execute_sql(generator.drop_view_sql) end |
#cti_execute_sql(sql) ⇒ Object
Needed since sqlite only executes the first statement in a string containing multiple statements
43 44 45 46 47 48 |
# File 'lib/db_view_cti/connection_adapters/schema_statements.rb', line 43 def cti_execute_sql(sql) return execute(sql) if sql.is_a?(String) sql.map do |query| execute(query) end end |
#cti_recreate_views_after_change_to(class_name, options = {}) ⇒ Object
use with block in up/down methods
23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 |
# File 'lib/db_view_cti/connection_adapters/schema_statements.rb', line 23 def cti_recreate_views_after_change_to(class_name, = {}) klass = class_name.constantize classes = klass.cti_all_descendants # only add class_name if it is not the base class classes = classes.unshift( class_name ) unless klass.cti_base_class? # drop all views in reverse order classes.reverse.each do |kklass| cti_drop_view(kklass, ) end yield # perform table changes in block (e.g. add column) # recreate views in forward order cti_reset_column_information(class_name) if klass.cti_base_class? classes.each do |kklass| cti_reset_column_information(kklass) cti_create_view(kklass, ) end end |
#cti_view_exists?(class_name) ⇒ Boolean
17 18 19 20 |
# File 'lib/db_view_cti/connection_adapters/schema_statements.rb', line 17 def cti_view_exists?(class_name) generator = DBViewCTI::SQLGeneration::Migration::Factory.generator(class_name) cti_execute_sql(generator.view_exists_sql)[0]['count'].to_i > 0 end |