Module: Sq::Dbsync::Database::Common
Constant Summary collapse
- SQD =
::Sq::Dbsync
Instance Method Summary collapse
- #__getobj__ ⇒ Object
- #__setobj__(db) ⇒ Object
- #customize_sql(sql, schema) ⇒ 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(plan) ⇒ Object
- #name ⇒ Object
Instance Method Details
#__getobj__ ⇒ Object
52 53 54 |
# File 'lib/sq/dbsync/database/common.rb', line 52 def __getobj__ db end |
#__setobj__(db) ⇒ Object
56 57 58 |
# File 'lib/sq/dbsync/database/common.rb', line 56 def __setobj__(db) @db = db end |
#customize_sql(sql, schema) ⇒ Object
31 32 33 |
# File 'lib/sq/dbsync/database/common.rb', line 31 def customize_sql(sql, schema) sql 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.
48 49 50 |
# File 'lib/sq/dbsync/database/common.rb', line 48 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 26 27 28 29 |
# 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.timestamp} > ?", last_row_at - overlap) end sql = query.sql sql = customize_sql(sql, db.schema(table_name)) extract_sql_to_file(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(plan) ⇒ Object
35 36 37 38 |
# File 'lib/sq/dbsync/database/common.rb', line 35 def hash_schema(plan) ensure_connection Hash[schema(plan.source_table_name)] end |
#name ⇒ Object
40 41 42 |
# File 'lib/sq/dbsync/database/common.rb', line 40 def name self['SELECT database()'].first.fetch(:'database()') end |