Class: Vela::DB

Inherits:
Object
  • Object
show all
Defined in:
lib/vela.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

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

#columnsObject (readonly)

Returns the value of attribute columns.



7
8
9
# File 'lib/vela.rb', line 7

def columns
  @columns
end

#dst_adapterObject (readonly)

Returns the value of attribute dst_adapter.



7
8
9
# File 'lib/vela.rb', line 7

def dst_adapter
  @dst_adapter
end

#dst_connObject (readonly)

Returns the value of attribute dst_conn.



7
8
9
# File 'lib/vela.rb', line 7

def dst_conn
  @dst_conn
end

#dst_tblObject (readonly)

Returns the value of attribute dst_tbl.



7
8
9
# File 'lib/vela.rb', line 7

def dst_tbl
  @dst_tbl
end

#src_adapterObject (readonly)

Returns the value of attribute src_adapter.



7
8
9
# File 'lib/vela.rb', line 7

def src_adapter
  @src_adapter
end

#src_connObject (readonly)

Returns the value of attribute src_conn.



7
8
9
# File 'lib/vela.rb', line 7

def src_conn
  @src_conn
end

#src_tblObject (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, options)
  @columns = options
  @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_queryObject



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_syncObject



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