log_table 0.2.3 → 0.2.5

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: eb2249532417af1e619879bf7d6ac4ab809b87dd
4
- data.tar.gz: bf7a4550319548d0c3b8a1c3498ce3d037664da1
3
+ metadata.gz: 7e5835027ab6c463244f53d0001322ef538659d7
4
+ data.tar.gz: 50319fa2fd5b590c3935311ba586b769ea277357
5
5
  SHA512:
6
- metadata.gz: 777964c013f49520968acb5f31768098066adce71bbb5968c5059740bcb80a99f1345ea0576b5429f36b3ffd1c3c4729f073da1b2bcaac59c94362d97f04773a
7
- data.tar.gz: c33ee25ed5bd35258dda6fd3ef4add858289785883a433312f56819920c499276665a440e9a018a7677882e9fdc5a92489ced04e6f5d4bdf80702f8a13b7784a
6
+ metadata.gz: 944e4552d8c9e9b51565af7b6113a8e11e7dd23e5997ebb2d6327c4df05cb7711c3f81c79d0ef95a8fcf06d56302fe2221618ce0125a0102259e006abb0a23af
7
+ data.tar.gz: 87df6659324c917584a54eeecc0f4cc7b7a8945598daed14dfc39f7b27563b7bbe0ccd23e1c3203de143d54c7df13c9923c39b6e135fa872bb66563b92cbab4c
@@ -14,7 +14,7 @@ module LogTable
14
14
  railtie_name :log_table
15
15
 
16
16
  rake_tasks do
17
- load 'tasks/db/generate_log_table.rake'
17
+ load 'tasks/db/generate_log_table_migration.rake'
18
18
  load 'tasks/db/generate_log_trigger_migration.rake'
19
19
  end
20
20
  end
@@ -1,3 +1,3 @@
1
1
  module LogTable
2
- VERSION = "0.2.3"
2
+ VERSION = "0.2.5"
3
3
  end
data/lib/log_table.rb CHANGED
@@ -10,36 +10,41 @@ require 'hairtrigger'
10
10
  require 'log_table/railtie' if defined?(Rails::Railtie)
11
11
 
12
12
  module LogTable
13
- module LogStatus
14
- STATUS_COLUMN_NAME = 'log_table_status'
13
+ STATUS_COLUMN_NAME = 'log_table_status'
14
+
15
+ def self.included(base)
16
+ base.send :extend, ClassMethods
17
+ end
18
+
19
+ module ClassMethods
15
20
  INSERTED = 'inserted'
16
21
  UPDATED = 'updated'
17
22
  DELETED = 'deleted'
18
23
 
19
- def self.sql_func(status, model_name, column_names, table_name, options)
20
- col_names = column_names
24
+ def sql_func(status, options)
25
+ col_names = column_names # Avoid any unnecessary round trips to the database
21
26
 
22
27
  db_columns = [STATUS_COLUMN_NAME] + col_names.map { |col_name|
23
- col_name == 'id' ? "#{model_name.underscore}_id" : "#{col_name}"
28
+ col_name == 'id' ? "#{model_name.to_s.underscore}_id" : "#{col_name}"
24
29
  }
25
30
 
26
31
  db_columns_str = db_columns.join(', ')
27
32
 
28
- values = (["\"#{status}\""] + col_names.map { |col| "NEW.#{col}" }).join(', ')
33
+ values = ["\"#{status}\""]
34
+
35
+ col_prefix = status == DELETED ? 'OLD' : 'NEW'
36
+
37
+ values += col_names.map { |col| "#{col_prefix}.#{col}" }
38
+
39
+ values_str = values.join(', ')
29
40
 
30
41
  log_table_name = options[:table_name] || "#{table_name}_log"
31
42
 
32
- sql = "INSERT INTO #{log_table_name}(#{db_columns_str}) VALUES (#{values})"
43
+ sql = "INSERT INTO #{log_table_name}(#{db_columns_str}) VALUES (#{values_str})"
33
44
 
34
45
  sql
35
46
  end
36
- end
37
-
38
- def self.included(base)
39
- base.send :extend, ClassMethods
40
- end
41
47
 
42
- module ClassMethods
43
48
  ##
44
49
  # add_log_trigger will add hairtrigger triggers to the model.
45
50
  # It will generate triggers for :insert and :update.
@@ -49,20 +54,16 @@ module LogTable
49
54
  # - :table_name - Specify table name of the log table.
50
55
  #
51
56
  def add_log_trigger(options = {})
52
-
53
57
  trigger.after(:insert) do
54
- LogStatus.sql_func(LogStatus::INSERTED, name, column_names, table_name,
55
- options)
58
+ sql_func(INSERTED, options)
56
59
  end
57
60
 
58
61
  trigger.after(:update) do
59
- LogStatus.sql_func(LogStatus::UPDATED, name, column_names, table_name,
60
- options)
62
+ sql_func(UPDATED, options)
61
63
  end
62
64
 
63
65
  trigger.after(:delete) do
64
- LogStatus.sql_func(LogStatus::DELETED, name, column_names, table_name,
65
- options)
66
+ sql_func(DELETED, options)
66
67
  end
67
68
  end
68
69
  end
@@ -32,7 +32,7 @@ namespace :db do
32
32
  table = OpenStruct.new
33
33
  table.model_id_col_name = "#{clazz.name.underscore}_id"
34
34
 
35
- cols = [OpenStruct.new(name: LogTable::LogStatus::STATUS_COLUMN_NAME,
35
+ cols = [OpenStruct.new(name: LogTable::STATUS_COLUMN_NAME,
36
36
  type: :string)]
37
37
 
38
38
  cols += clazz.columns.map do |col|
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: log_table
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.3
4
+ version: 0.2.5
5
5
  platform: ruby
6
6
  authors:
7
7
  - Daisuke Shimamoto
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2015-12-03 00:00:00.000000000 Z
11
+ date: 2015-12-04 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: hairtrigger