Module: Sq::Dbsync::Database::Common
Constant Summary collapse
Instance Method Summary collapse
- #__getobj__ ⇒ Object
- #__setobj__(db) ⇒ Object
-
#ensure_connection ⇒ Object
Since we go so long without using connections (during a batch load), they go stale and raise DatabaseDisconnectError when we try to use them.
- #extract_incrementally_to_file(plan, file_name, last_row_at, overlap) ⇒ Object
- #extract_to_file(table_name, columns, file_name) ⇒ Object
- #hash_schema(table_name) ⇒ Object
- #name ⇒ Object
Instance Method Details
#__getobj__ ⇒ Object
44 45 46 |
# File 'lib/sq/dbsync/database/common.rb', line 44 def __getobj__ db end |
#__setobj__(db) ⇒ Object
48 49 50 |
# File 'lib/sq/dbsync/database/common.rb', line 48 def __setobj__(db) @db = db end |
#ensure_connection ⇒ Object
Since we go so long without using connections (during a batch load), they go stale and raise DatabaseDisconnectError when we try to use them. This method ensures that the connection is fresh even after a long time between drinks.
40 41 42 |
# File 'lib/sq/dbsync/database/common.rb', line 40 def ensure_connection db.disconnect end |
#extract_incrementally_to_file(plan, file_name, last_row_at, overlap) ⇒ Object
15 16 17 18 19 20 21 22 23 24 25 |
# File 'lib/sq/dbsync/database/common.rb', line 15 def extract_incrementally_to_file(plan, file_name, last_row_at, overlap) table_name = plan.source_table_name.to_sym db_columns = db.schema(table_name).map(&:first) query = self[table_name].select(*plan.columns) if last_row_at query = query.filter("#{plan.} > ?", last_row_at - overlap) end extract_sql_to_file(query.sql, file_name) end |
#extract_to_file(table_name, columns, file_name) ⇒ Object
8 9 10 11 12 13 |
# File 'lib/sq/dbsync/database/common.rb', line 8 def extract_to_file(table_name, columns, file_name) extract_sql_to_file("SELECT %s FROM %s" % [ columns.join(', '), table_name ], file_name) end |
#hash_schema(table_name) ⇒ Object
27 28 29 30 |
# File 'lib/sq/dbsync/database/common.rb', line 27 def hash_schema(table_name) ensure_connection Hash[schema(table_name)] end |
#name ⇒ Object
32 33 34 |
# File 'lib/sq/dbsync/database/common.rb', line 32 def name self['SELECT database()'].first.fetch(:'database()') end |