log_table 0.2.3 → 0.2.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
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