mysqlaudit 0.0.2 → 0.0.3

Sign up to get free protection for your applications and to get access to all the features.
data/README.md CHANGED
@@ -137,7 +137,6 @@ $ mysqlaudit uninstall --host 127.0.0.1 \
137
137
  Drop testing table and database:
138
138
 
139
139
  ```SQL
140
- DROP TABLE audit;
141
140
  DROP DATABASE foo;
142
141
  ```
143
142
 
data/bin/mysqlaudit CHANGED
@@ -24,7 +24,11 @@ command :install do |c|
24
24
  c.option '--schema STRING', String, 'Schema name'
25
25
  c.option '--table STRING', String, 'Table name'
26
26
  c.action do |args, options|
27
- Mysqlaudit::Actions.new(options.host, options.user, options.pass, options.schema, options.table).install
27
+ Mysqlaudit::Actions.new({host: options.host,
28
+ user: options.user,
29
+ password: options.pass,
30
+ schema: options.schema,
31
+ table: options.table}).install
28
32
  end
29
33
  end
30
34
 
@@ -38,7 +42,12 @@ command :uninstall do |c|
38
42
  c.option '--table STRING', String, 'Table name'
39
43
  c.option '--[no-]drop-audit-table', 'Drop audit table'
40
44
  c.action do |args, options|
41
- Mysqlaudit::Actions.new(options.host, options.user, options.pass, options.schema, options.table, options.drop_audit_table).uninstall
45
+ Mysqlaudit::Actions.new({host: options.host,
46
+ user: options.user,
47
+ password: options.pass,
48
+ schema: options.schema,
49
+ table: options.table,
50
+ drop: options.drop_audit_table}).uninstall
42
51
  end
43
52
  end
44
53
 
@@ -52,10 +61,17 @@ command :rollback do |c|
52
61
  c.option '--table STRING', String, 'Table name'
53
62
  c.option '--statement STRING', String, 'Statement operation: insert, update, delete'
54
63
  c.action do |args, options|
55
- if [:insert, :update, :delete].include? options.statement.to_sym
56
- Mysqlaudit::Actions.new(options.host, options.user, options.pass, options.schema, options.table, nil, options.statement).rollback
57
- else
58
- puts "Invalid values on argument: --statement."
64
+ if !options.statement.nil?
65
+ if [:insert, :update, :delete].include? options.statement.to_sym
66
+ Mysqlaudit::Actions.new({host: options.host,
67
+ user: options.user,
68
+ password: options.pass,
69
+ schema: options.schema,
70
+ table: options.table,
71
+ statement: options.statement.to_sym}).rollback
72
+ else
73
+ puts "Invalid values on argument: --statement."
74
+ end
59
75
  end
60
76
  end
61
77
  end
@@ -4,25 +4,20 @@ module Mysqlaudit
4
4
  class Actions
5
5
  @audit = nil
6
6
 
7
- def initialize(host, user, password, schema, table, drop = nil, statement = nil)
8
- # def initialize(schema, table, options = {})
9
- # options = {host: 'localhost', user: 'root', password: ''}.merge(options)
10
-
11
- $host = host
12
- $user = user
13
- $password = password
14
- $schema = schema
15
- $table = table
16
- $drop = drop
17
- $statement = statement
18
-
19
- @audit = Mysqlaudit::Audit.new($host, $user, $password, $schema)
7
+ def initialize(options = {})
8
+ options.delete_if { |k, v| v.nil? }
9
+ $options = {host: 'localhost', user: 'root', password: ''}.merge(options)
10
+
11
+ @audit = Mysqlaudit::Audit.new($options[:host],
12
+ $options[:user],
13
+ $options[:password],
14
+ $options[:schema])
20
15
  end
21
16
 
22
17
  def install()
23
18
  @audit.create_table()
24
19
 
25
- if !$table
20
+ if !$options[:table]
26
21
  tables = @audit.get_tables()
27
22
  tables.each do | table |
28
23
  @audit.create_trigger(table, :insert)
@@ -30,14 +25,14 @@ module Mysqlaudit
30
25
  @audit.create_trigger(table, :delete)
31
26
  end
32
27
  else
33
- @audit.create_trigger($table, :insert)
34
- @audit.create_trigger($table, :update)
35
- @audit.create_trigger($table, :delete)
28
+ @audit.create_trigger($options[:table], :insert)
29
+ @audit.create_trigger($options[:table], :update)
30
+ @audit.create_trigger($options[:table], :delete)
36
31
  end
37
32
  end
38
33
 
39
34
  def uninstall()
40
- if !$table
35
+ if !$options[:table]
41
36
  tables = @audit.get_tables()
42
37
  tables.each do | table |
43
38
  @audit.drop_trigger(table, :insert)
@@ -45,18 +40,18 @@ module Mysqlaudit
45
40
  @audit.drop_trigger(table, :delete)
46
41
  end
47
42
  else
48
- @audit.drop_trigger($table, :insert)
49
- @audit.drop_trigger($table, :update)
50
- @audit.drop_trigger($table, :delete)
43
+ @audit.drop_trigger($options[:table], :insert)
44
+ @audit.drop_trigger($options[:table], :update)
45
+ @audit.drop_trigger($options[:table], :delete)
51
46
  end
52
47
 
53
- if $drop
48
+ if $options[:drop]
54
49
  @audit.drop_table()
55
50
  end
56
51
  end
57
52
 
58
53
  def rollback()
59
- @audit.rollback($table, $statement.to_sym)
54
+ @audit.rollback($options[:table], $options[:statement])
60
55
  end
61
56
  end
62
57
  end
@@ -128,41 +128,36 @@ SQL
128
128
  @mysql.query(sql).count == 1
129
129
  end
130
130
 
131
- def build_pivot_query(table, statement)
132
- columns = get_columns($table)
133
- key = get_primary_key($table)
131
+ def rollback(table, statement)
132
+ columns = get_columns(table)
133
+ key = get_primary_key(table)
134
134
 
135
135
  case statement
136
136
  when :insert
137
137
  sql = <<SQL
138
- SELECT CONCAT('/* ', trigger_at, ' */ DELETE FROM #{$table} WHERE id = ', MAX(primary_key),';') AS `row`
138
+ SELECT CONCAT('/* ', trigger_at, ' */ DELETE FROM #{table} WHERE id = ', MAX(primary_key),';') AS `row`
139
139
  FROM audits
140
140
  WHERE `type` = 'I'
141
- AND `table` = '#{$table}'
141
+ AND `table` = '#{table}'
142
142
  GROUP BY primary_key
143
143
  ORDER BY trigger_at, primary_key, `column` ASC;
144
144
  SQL
145
145
  when :delete
146
- sql = "SELECT CONCAT('/* ', trigger_at, ' */ INSERT INTO #{$table} (#{key}, #{columns.join(', ')}) VALUES (', primary_key, ', ', "
146
+ sql = "SELECT CONCAT('/* ', trigger_at, ' */ INSERT INTO #{table} (#{key}, #{columns.join(', ')}) VALUES (', primary_key, ', ', "
147
147
  columns.each do | column |
148
148
  sql << " QUOTE(MAX(IF(`column` = '#{column}', `old`, NULL))), ', ', "
149
149
  end
150
150
  sql = sql.chomp(" ', ', ")
151
151
  sql << "');'"
152
- sql << ") AS `row` FROM audits WHERE `type` = 'D' AND `table` = '#{$table}' GROUP BY primary_key ORDER BY trigger_at, primary_key, `column` ASC;"
152
+ sql << ") AS `row` FROM audits WHERE `type` = 'D' AND `table` = '#{table}' GROUP BY primary_key ORDER BY trigger_at, primary_key, `column` ASC;"
153
153
  when :update
154
154
  sql = "SELECT CONCAT('/* ', trigger_at, ' */ UPDATE users SET ', `column`, ' = ', QUOTE(old), ' WHERE id = ', primary_key, ';') AS `row`"
155
- sql << "FROM audits WHERE `type` = 'U' AND `table` = '#{$table}' ORDER BY trigger_at, primary_key, `column` ASC;"
155
+ sql << "FROM audits WHERE `type` = 'U' AND `table` = '#{table}' ORDER BY trigger_at, primary_key, `column` ASC;"
156
156
  end
157
157
 
158
158
  sql_result = @mysql.query(sql)
159
159
  sql_result.each(:as => :array) do |row|
160
160
  puts row
161
- end
162
- end
163
-
164
- def rollback(table, statement)
165
- build_pivot_query(table, statement)
166
- end
161
+ end end
167
162
  end
168
163
  end
@@ -1,3 +1,3 @@
1
1
  module Mysqlaudit
2
- VERSION = '0.0.2'
2
+ VERSION = '0.0.3'
3
3
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: mysqlaudit
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.2
4
+ version: 0.0.3
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2013-07-18 00:00:00.000000000 Z
12
+ date: 2013-07-19 00:00:00.000000000 Z
13
13
  dependencies: []
14
14
  description: MySQL tool for audit all tables with triggers.
15
15
  email: nicola51980@gmail.com