Class: Vela::DB
- Inherits:
-
Object
- Object
- Vela::DB
- Defined in:
- lib/vela.rb
Instance Attribute Summary collapse
-
#columns ⇒ Object
readonly
Returns the value of attribute columns.
-
#dst_adapter ⇒ Object
readonly
Returns the value of attribute dst_adapter.
-
#dst_conn ⇒ Object
readonly
Returns the value of attribute dst_conn.
-
#dst_tbl ⇒ Object
readonly
Returns the value of attribute dst_tbl.
-
#src_adapter ⇒ Object
readonly
Returns the value of attribute src_adapter.
-
#src_conn ⇒ Object
readonly
Returns the value of attribute src_conn.
-
#src_tbl ⇒ Object
readonly
Returns the value of attribute src_tbl.
Instance Method Summary collapse
- #build_dollar_signs(rcrd) ⇒ Object
-
#dbsync(src_tbl, dst_tbl, options) ⇒ Object
db_sql_sync.
- #dst_connection(args) ⇒ Object
- #get_adapter_connection(args) ⇒ Object
-
#initialize(src_tbl = nil, dst_tbl = nil, src_adapter = nil, dst_adapter = nil) ⇒ DB
constructor
A new instance of DB.
- #insert_query(columns, d_signs, rcrd) ⇒ Object
-
#rename_keys(record, cols) ⇒ Object
swap key and values.
- #select_query ⇒ Object
- #sql_sync ⇒ Object
- #src_connection(args) ⇒ Object
Constructor Details
#initialize(src_tbl = nil, dst_tbl = nil, src_adapter = nil, dst_adapter = nil) ⇒ DB
Returns a new instance of DB.
8 9 10 11 12 13 14 15 16 |
# File 'lib/vela.rb', line 8 def initialize(src_tbl=nil,dst_tbl=nil, src_adapter=nil, dst_adapter=nil) @src_conn = nil @dst_conn = nil @src_adapter = src_adapter @dst_adapter = dst_adapter @src_tbl = src_tbl @dst_tbl = dst_tbl @columns = nil end |
Instance Attribute Details
#columns ⇒ Object (readonly)
Returns the value of attribute columns.
7 8 9 |
# File 'lib/vela.rb', line 7 def columns @columns end |
#dst_adapter ⇒ Object (readonly)
Returns the value of attribute dst_adapter.
7 8 9 |
# File 'lib/vela.rb', line 7 def dst_adapter @dst_adapter end |
#dst_conn ⇒ Object (readonly)
Returns the value of attribute dst_conn.
7 8 9 |
# File 'lib/vela.rb', line 7 def dst_conn @dst_conn end |
#dst_tbl ⇒ Object (readonly)
Returns the value of attribute dst_tbl.
7 8 9 |
# File 'lib/vela.rb', line 7 def dst_tbl @dst_tbl end |
#src_adapter ⇒ Object (readonly)
Returns the value of attribute src_adapter.
7 8 9 |
# File 'lib/vela.rb', line 7 def src_adapter @src_adapter end |
#src_conn ⇒ Object (readonly)
Returns the value of attribute src_conn.
7 8 9 |
# File 'lib/vela.rb', line 7 def src_conn @src_conn end |
#src_tbl ⇒ Object (readonly)
Returns the value of attribute src_tbl.
7 8 9 |
# File 'lib/vela.rb', line 7 def src_tbl @src_tbl end |
Instance Method Details
#build_dollar_signs(rcrd) ⇒ Object
87 88 89 90 91 92 93 94 |
# File 'lib/vela.rb', line 87 def build_dollar_signs(rcrd) d_signs = '' rcrd.length.times do |i| d_signs += "$#{i+1}," end # remove the last comma d_signs.chomp!(',') end |
#dbsync(src_tbl, dst_tbl, options) ⇒ Object
db_sql_sync
63 64 65 66 67 68 |
# File 'lib/vela.rb', line 63 def dbsync(src_tbl, dst_tbl, ) @columns = @src_tbl = src_tbl @dst_tbl = dst_tbl sql_sync end |
#dst_connection(args) ⇒ Object
23 24 25 26 |
# File 'lib/vela.rb', line 23 def dst_connection(args) @dst_adapter = args[:adapter] @dst_conn = get_adapter_connection(args) end |
#get_adapter_connection(args) ⇒ Object
70 71 72 73 74 75 76 77 78 79 |
# File 'lib/vela.rb', line 70 def get_adapter_connection(args) case args[:adapter] when "mysql" Mysql2::Client.new(host: args[:host], user: args[:user], password: args[:password], database: args[:database]) when "postgresql" PG.connect(host: args[:host], user: args[:user], password: args[:password], dbname: args[:database]) else puts "adapter is not supported!" end end |
#insert_query(columns, d_signs, rcrd) ⇒ Object
33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 |
# File 'lib/vela.rb', line 33 def insert_query(columns, d_signs, rcrd) begin statement = "insert into %s (%s) values (%s)" % [@dst_tbl,columns,d_signs] if @dst_adapter.eql? "postgresql" @dst_conn.prepare("statement#{rcrd['id']}", statement) @dst_conn.exec_prepared("statement#{rcrd['id']}",rcrd.values) else values = rcrd.values.to_s.tr!('[]', '').gsub('nil', 'null') statement = "insert into %s (%s) values (%s)" % [@dst_tbl,columns,values] @dst_conn.query(statement) end rescue Exception => e puts e end end |
#rename_keys(record, cols) ⇒ Object
swap key and values
82 83 84 |
# File 'lib/vela.rb', line 82 def rename_keys(record, cols) cols.nil? ? record : Hash[record.map { |k, v| [(cols[k] || k).to_sym ,v] }] end |
#select_query ⇒ Object
28 29 30 31 |
# File 'lib/vela.rb', line 28 def select_query sqry = "SELECT * from #{@src_tbl} limit 50" (@src_adapter.eql? "mysql") ? @src_conn.query(sqry) : @src_conn.exec(sqry) end |
#sql_sync ⇒ Object
52 53 54 55 56 57 58 59 60 61 |
# File 'lib/vela.rb', line 52 def sql_sync select_query.each do |rcrd| d_signs = build_dollar_signs(rcrd) rcrd = rename_keys(rcrd, @columns) columns = rcrd.keys.to_s.tr('[]:"','') insert_query(columns, d_signs, rcrd) end end |
#src_connection(args) ⇒ Object
18 19 20 21 |
# File 'lib/vela.rb', line 18 def src_connection(args) @src_adapter = args[:adapter] @src_conn = get_adapter_connection(args) end |