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 +4 -4
- data/lib/log_table/railtie.rb +1 -1
- data/lib/log_table/version.rb +1 -1
- data/lib/log_table.rb +21 -20
- data/lib/tasks/db/generate_log_table_migration.rake +1 -1
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 7e5835027ab6c463244f53d0001322ef538659d7
|
4
|
+
data.tar.gz: 50319fa2fd5b590c3935311ba586b769ea277357
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 944e4552d8c9e9b51565af7b6113a8e11e7dd23e5997ebb2d6327c4df05cb7711c3f81c79d0ef95a8fcf06d56302fe2221618ce0125a0102259e006abb0a23af
|
7
|
+
data.tar.gz: 87df6659324c917584a54eeecc0f4cc7b7a8945598daed14dfc39f7b27563b7bbe0ccd23e1c3203de143d54c7df13c9923c39b6e135fa872bb66563b92cbab4c
|
data/lib/log_table/railtie.rb
CHANGED
data/lib/log_table/version.rb
CHANGED
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
|
-
|
14
|
-
|
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
|
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 =
|
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 (#{
|
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
|
-
|
55
|
-
options)
|
58
|
+
sql_func(INSERTED, options)
|
56
59
|
end
|
57
60
|
|
58
61
|
trigger.after(:update) do
|
59
|
-
|
60
|
-
options)
|
62
|
+
sql_func(UPDATED, options)
|
61
63
|
end
|
62
64
|
|
63
65
|
trigger.after(:delete) do
|
64
|
-
|
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::
|
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.
|
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-
|
11
|
+
date: 2015-12-04 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: hairtrigger
|