Class: KPM::Database
- Inherits:
-
Object
- Object
- KPM::Database
- Defined in:
- lib/kpm/database.rb
Constant Summary collapse
- LAST_INSERTED_ID =
Mysql Information functions
'SELECT LAST_INSERT_ID();'- ROWS_UPDATED =
'SELECT ROW_COUNT();'- DATABASE =
Destination database
ENV['DATABASE'] || 'killbill'
- USERNAME =
ENV['USERNAME'] || 'root'
- PASSWORD =
ENV['PASSWORD'] || 'root'
- HOST =
ENV['HOST'] || 'localhost'
- PORT =
ENV['PORT'] || '3306'
- COLUMN_NAME_POS =
3- STATEMENT_TMP_FILE =
Dir.mktmpdir('statement') + File::SEPARATOR + 'statement.sql'
- MYSQL_COMMAND_LINE =
"mysql #{DATABASE} --user=#{USERNAME} --password=#{PASSWORD} "- @@mysql_command_line =
MYSQL_COMMAND_LINE- @@username =
USERNAME- @@password =
PASSWORD- @@database =
DATABASE- @@host =
HOST- @@port =
PORT
Class Method Summary collapse
- .execute_insert_statement(table_name, query, qty_to_insert, table_data, record_id = nil) ⇒ Object
- .generate_insert_statement(tables) ⇒ Object
- .set_credentials(user = nil, password = nil) ⇒ Object
- .set_database_name(database_name = nil) ⇒ Object
- .set_host(host) ⇒ Object
- .set_logger(logger) ⇒ Object
- .set_mysql_command_line ⇒ Object
- .set_port(port) ⇒ Object
Class Method Details
.execute_insert_statement(table_name, query, qty_to_insert, table_data, record_id = nil) ⇒ Object
57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 |
# File 'lib/kpm/database.rb', line 57 def execute_insert_statement(table_name, query, qty_to_insert, table_data, record_id = nil) unless record_id.nil? query = "set #{record_id[:variable]}=#{record_id[:value]}; #{query}" end query = "SET autocommit=0; #{query} COMMIT;" File.open(STATEMENT_TMP_FILE,'w') do |s| s.puts query end response = `#{@@mysql_command_line} < "#{STATEMENT_TMP_FILE}" 2>&1` if response.include? 'ERROR' @@logger.error "\e[91;1mTransaction that fails to be executed\e[0m" @@logger.error "\e[91m#{query}\e[0m" raise Interrupt, "Importing table #{table_name}...... \e[91;1m#{response}\e[0m" end if response.include? 'LAST_INSERT_ID' @@logger.info "\e[32mImporting table #{table_name}...... Row 1 of #{qty_to_insert} success\e[0m" return response.split("\n")[1] end if response.include? 'ROW_COUNT' response_msg = response.split("\n") row_count_inserted = response_msg[response_msg.size - 1] @@logger.info "\e[32mImporting table #{table_name}...... Row #{ row_count_inserted || 1} of #{qty_to_insert} success\e[0m" return true end return true end |
.generate_insert_statement(tables) ⇒ Object
93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 |
# File 'lib/kpm/database.rb', line 93 def generate_insert_statement(tables) statements = [] @@logger.info "\e[32mGenerating statements\e[0m" tables.each_key do |table_name| table = tables[table_name] if !table[:rows].nil? && table[:rows].size > 0 columns_names = table[:col_names].join(",").gsub(/'/,'') rows = [] table[:rows].each do |row| rows << row.map{|value| value.is_a?(Symbol) ? value.to_s : "'#{value.to_s.gsub(/['"]/, "'" => "\\'", '"' => '\\"')}'" }.join(",") end value_data = rows.map{|row| "(#{row})" }.join(",") statements << {:query => get_insert_statement(table_name,columns_names,value_data, rows.size), :qty_to_insert => rows.size, :table_name => table_name, :table_data => table} end end statements end |
.set_credentials(user = nil, password = nil) ⇒ Object
36 37 38 39 |
# File 'lib/kpm/database.rb', line 36 def set_credentials(user = nil, password = nil) @@username = user @@password = password end |
.set_database_name(database_name = nil) ⇒ Object
49 50 51 |
# File 'lib/kpm/database.rb', line 49 def set_database_name(database_name = nil) @@database = database_name end |
.set_host(host) ⇒ Object
41 42 43 |
# File 'lib/kpm/database.rb', line 41 def set_host(host) @@host = host end |
.set_logger(logger) ⇒ Object
32 33 34 |
# File 'lib/kpm/database.rb', line 32 def set_logger(logger) @@logger = logger end |
.set_mysql_command_line ⇒ Object
53 54 55 |
# File 'lib/kpm/database.rb', line 53 def set_mysql_command_line @@mysql_command_line = "mysql #{@@database} --host=#{@@host} --port=#{@@port} --user=#{@@username} --password=#{@@password} " end |
.set_port(port) ⇒ Object
45 46 47 |
# File 'lib/kpm/database.rb', line 45 def set_port(port) @@port = port end |