better_record 0.23.5 → 0.25.0

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
  SHA256:
3
- metadata.gz: acbec2be3dca17105f3e47392103cf13f57342b20383b495e04deb4e80896fd6
4
- data.tar.gz: 673ab590c7cfd0873336d54e26cd342bef0ce3d6911d2af10fd1f4924476bdd4
3
+ metadata.gz: 5e14508d1f965fba3627ea9c4449b9fa99aae6dc4888d50ca184e376e0bfd7f8
4
+ data.tar.gz: b7dc73ef64bf0a4493a04bccd48c87796d388fc1f1cc51dc0aed4e70fc697ab8
5
5
  SHA512:
6
- metadata.gz: d70d88e25a4e27d01878e7c6dd8c34ed668153c631cde03140aa2ec040293bceedcf631f4491c9990108998889455bf561bfea316f16a01f9286274a4e6705ef
7
- data.tar.gz: 6101f656d284fc2f21c845e04bc1e3eb0855a27a30206d380d2c1901e9520873b2c6059361b78d2629340643a6b9e8fadaee87a64c861a7872ab40fa9571d562
6
+ metadata.gz: aa140f70f9b6e173c9db0116c81e65a5981e7156ee1ac579a4bf49605652e7e23f4b81cc040fdf1664106d65db1195dcbdff10ccee4ba051b5d40d3936f899f5
7
+ data.tar.gz: 40f4fdc3cac02693a4336c6216f3e505f06e196aea1fdf53e081dea98307b7aed1dfd188c88e68f890c22ae72704a06ceea8e226657e532ce5d1d5e90e52f8be
@@ -29,10 +29,14 @@ module BetterRecord
29
29
  connection.execute(%Q(SELECT 1 FROM #{t_name}_#{self.table_name_only} LIMIT 1))
30
30
 
31
31
  self.const_set(:LoggedAction, Class.new(ApplicationRecord))
32
+ self.const_get(:LoggedAction).include(ModelConcerns::LoggedActionBase)
32
33
  self.const_get(:LoggedAction).table_name = "#{t_name}_#{self.table_name_only}"
33
34
  self.const_get(:LoggedAction).primary_key = :event_id
35
+ self.const_get(:LoggedAction).first
36
+ self
34
37
  rescue ActiveRecord::StatementInvalid
35
38
  self.const_set(:LoggedAction, BetterRecord::LoggedAction)
39
+ self
36
40
  end
37
41
 
38
42
  self.has_many self.audit_relation_name,
@@ -64,6 +68,21 @@ module BetterRecord
64
68
  select(cq).limit(1).first[:"hashed_cert_#{t}"]
65
69
  end
66
70
 
71
+ def self.reset_all_schemas
72
+ ActiveRecord::Base.descendants.each do |desc|
73
+ desc.reset_qualified_schema rescue nil
74
+ end
75
+ true
76
+ end
77
+
78
+ def self.reset_qualified_schema
79
+ @schema_qualified = nil
80
+ end
81
+
82
+ def self.saved_qualified_schema
83
+ @schema_qualified
84
+ end
85
+
67
86
  def self.schema_qualified
68
87
  return @schema_qualified if @schema_qualified.present?
69
88
  if table_name =~ /.+\..+/
@@ -90,14 +109,14 @@ module BetterRecord
90
109
  ).first
91
110
 
92
111
  if row.present?
93
- @schema_name = {
112
+ @schema_qualified = {
94
113
  schema_name: row['nspname'],
95
114
  table_name: row['relname']
96
115
  }
97
116
  break
98
117
  end
99
118
  end
100
- return @schema_name || {
119
+ return @schema_qualified ||= {
101
120
  schema_name: "public",
102
121
  table_name: table_name
103
122
  }
@@ -3,27 +3,15 @@
3
3
  module BetterRecord
4
4
  class LoggedAction < Base
5
5
  # == Constants ============================================================
6
- ACTIONS = {
7
- D: 'DELETE',
8
- I: 'INSERT',
9
- U: 'UPDATE',
10
- T: 'TRUNCATE',
11
- A: 'ARCHIVE',
12
- }.with_indifferent_access
13
6
 
14
7
  # == Attributes ===========================================================
15
8
  self.table_name = "#{BetterRecord.db_audit_schema}.logged_actions_view"
16
9
  self.primary_key = :event_id
17
10
 
18
11
  # == Extensions ===========================================================
12
+ include ModelConcerns::LoggedActionBase
19
13
 
20
14
  # == Relationships ========================================================
21
- belongs_to :audited,
22
- polymorphic: :true,
23
- primary_type: :table_name,
24
- foreign_key: :row_id,
25
- foreign_type: :table_name,
26
- optional: true
27
15
 
28
16
  # == Validations ==========================================================
29
17
 
@@ -34,37 +22,10 @@ module BetterRecord
34
22
  # == Boolean Class Methods ================================================
35
23
 
36
24
  # == Class Methods ========================================================
37
- def self.default_print
38
- [
39
- :event_id,
40
- :row_id,
41
- :full_name,
42
- :app_user_id,
43
- :app_user_type,
44
- :action_type,
45
- :changed_columns
46
- ]
47
- end
48
-
49
- # def self.set_audits_methods!
50
- # self.has_many self.audit_relation_name,
51
- # class_name: 'BetterRecord::LoggedAction',
52
- # primary_type: :table_name,
53
- # foreign_key: :row_id,
54
- # foreign_type: :table_name,
55
- # as: self.audit_relation_name
56
- # end
57
25
 
58
26
  # == Boolean Methods ======================================================
59
27
 
60
28
  # == Instance Methods =====================================================
61
- def changed_columns
62
- (self.changed_fields || {}).keys.join(', ').presence || 'N/A'
63
- end
64
-
65
- def action_type
66
- ACTIONS[action] || 'UNKNOWN'
67
- end
68
29
 
69
30
  end
70
31
  end
@@ -0,0 +1,50 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'active_support/concern'
4
+
5
+ module BetterRecord
6
+ module ModelConcerns
7
+ module LoggedActionBase
8
+ extend ActiveSupport::Concern
9
+
10
+ ACTIONS = {
11
+ D: 'DELETE',
12
+ I: 'INSERT',
13
+ U: 'UPDATE',
14
+ T: 'TRUNCATE',
15
+ A: 'ARCHIVE',
16
+ }.with_indifferent_access
17
+
18
+ included do
19
+ belongs_to :record,
20
+ polymorphic: :true,
21
+ primary_type: :table_name,
22
+ foreign_key: :row_id,
23
+ foreign_type: :table_name,
24
+ optional: true
25
+ end
26
+
27
+ class_methods do
28
+ def default_print
29
+ [
30
+ :event_id,
31
+ :row_id,
32
+ :full_name,
33
+ :app_user_id,
34
+ :app_user_type,
35
+ :action_type,
36
+ :changed_columns
37
+ ]
38
+ end
39
+ end
40
+
41
+ def changed_columns
42
+ (self.changed_fields || {}).keys.join(', ').presence || 'N/A'
43
+ end
44
+
45
+ def action_type
46
+ ACTIONS[action] || 'UNKNOWN'
47
+ end
48
+ end
49
+ end
50
+ end
@@ -85,12 +85,6 @@ module BetterRecord
85
85
  # == Boolean Methods ======================================================
86
86
 
87
87
  # == Instance Methods =====================================================
88
- def changed_columns
89
- (self.changed_fields || {}).keys.join(', ').presence || 'N/A'
90
- end
91
88
 
92
- def action_type
93
- ACTIONS[action] || 'UNKNOWN'
94
- end
95
89
  end
96
90
  end
@@ -85,6 +85,7 @@ module BetterRecord
85
85
  end
86
86
 
87
87
  def del(*keys)
88
+ keys.flatten!
88
89
  i = 0
89
90
  keys.map {|k| data.delete(k) && (i += 1) }
90
91
  i
@@ -23,7 +23,7 @@ module BetterRecord
23
23
  $!.message, $!.backtrace if debug
24
24
 
25
25
  if type_val == :table_name_without_schema
26
- type_val = klass.table_name.to_s.split('.').first
26
+ type_val = klass.table_name.to_s.split('.').last
27
27
  else
28
28
  type_val = klass.polymorphic_name
29
29
  end
@@ -50,7 +50,7 @@ module BetterRecord
50
50
  end
51
51
  end
52
52
  p "Present Polymorphic Values:", values if debug
53
- values
53
+ values.uniq
54
54
  end
55
55
  end
56
56
  end
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module BetterRecord
4
- VERSION = '0.23.5'
4
+ VERSION = '0.25.0'
5
5
  end
@@ -1,7 +1,7 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  class Array
4
- def to_enum
4
+ def to_db_enum
5
5
  hashed = {}
6
6
  each {|v| hashed[v] = v.to_s}
7
7
  hashed
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: better_record
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.23.5
4
+ version: 0.25.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Sampson Crowley
8
- autorequire:
8
+ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2019-08-27 00:00:00.000000000 Z
11
+ date: 2020-06-11 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rails
@@ -19,7 +19,7 @@ dependencies:
19
19
  version: '5'
20
20
  - - ">="
21
21
  - !ruby/object:Gem::Version
22
- version: 5.2.3
22
+ version: 5.2.4
23
23
  type: :runtime
24
24
  prerelease: false
25
25
  version_requirements: !ruby/object:Gem::Requirement
@@ -29,7 +29,7 @@ dependencies:
29
29
  version: '5'
30
30
  - - ">="
31
31
  - !ruby/object:Gem::Version
32
- version: 5.2.3
32
+ version: 5.2.4
33
33
  - !ruby/object:Gem::Dependency
34
34
  name: pg
35
35
  requirement: !ruby/object:Gem::Requirement
@@ -59,7 +59,7 @@ dependencies:
59
59
  version: '0.0'
60
60
  - - ">="
61
61
  - !ruby/object:Gem::Version
62
- version: 0.0.17
62
+ version: 0.0.19
63
63
  type: :runtime
64
64
  prerelease: false
65
65
  version_requirements: !ruby/object:Gem::Requirement
@@ -69,7 +69,7 @@ dependencies:
69
69
  version: '0.0'
70
70
  - - ">="
71
71
  - !ruby/object:Gem::Version
72
- version: 0.0.17
72
+ version: 0.0.19
73
73
  - !ruby/object:Gem::Dependency
74
74
  name: pry-rails
75
75
  requirement: !ruby/object:Gem::Requirement
@@ -154,42 +154,42 @@ dependencies:
154
154
  name: csv
155
155
  requirement: !ruby/object:Gem::Requirement
156
156
  requirements:
157
- - - ">="
158
- - !ruby/object:Gem::Version
159
- version: 3.0.0
160
157
  - - "~>"
161
158
  - !ruby/object:Gem::Version
162
159
  version: '3.0'
160
+ - - ">="
161
+ - !ruby/object:Gem::Version
162
+ version: 3.1.2
163
163
  type: :runtime
164
164
  prerelease: false
165
165
  version_requirements: !ruby/object:Gem::Requirement
166
166
  requirements:
167
- - - ">="
168
- - !ruby/object:Gem::Version
169
- version: 3.0.0
170
167
  - - "~>"
171
168
  - !ruby/object:Gem::Version
172
169
  version: '3.0'
170
+ - - ">="
171
+ - !ruby/object:Gem::Version
172
+ version: 3.1.2
173
173
  - !ruby/object:Gem::Dependency
174
174
  name: rspec-rails
175
175
  requirement: !ruby/object:Gem::Requirement
176
176
  requirements:
177
- - - "~>"
178
- - !ruby/object:Gem::Version
179
- version: '3.7'
180
177
  - - ">="
181
178
  - !ruby/object:Gem::Version
182
- version: 3.7.2
179
+ version: 3.9.0
180
+ - - "~>"
181
+ - !ruby/object:Gem::Version
182
+ version: '3.9'
183
183
  type: :development
184
184
  prerelease: false
185
185
  version_requirements: !ruby/object:Gem::Requirement
186
186
  requirements:
187
- - - "~>"
188
- - !ruby/object:Gem::Version
189
- version: '3.7'
190
187
  - - ">="
191
188
  - !ruby/object:Gem::Version
192
- version: 3.7.2
189
+ version: 3.9.0
190
+ - - "~>"
191
+ - !ruby/object:Gem::Version
192
+ version: '3.9'
193
193
  - !ruby/object:Gem::Dependency
194
194
  name: factory_bot_rails
195
195
  requirement: !ruby/object:Gem::Requirement
@@ -244,6 +244,7 @@ files:
244
244
  - app/models/better_record/logged_action.rb
245
245
  - app/models/better_record/model_concerns/has_protected_password.rb
246
246
  - app/models/better_record/model_concerns/has_validated_avatar.rb
247
+ - app/models/better_record/model_concerns/logged_action_base.rb
247
248
  - app/models/better_record/table_size.rb
248
249
  - app/views/better_record/table_sizes/index.html.erb
249
250
  - app/views/better_record/table_sizes/show.html.erb
@@ -345,7 +346,7 @@ homepage: https://github.com/SampsonCrowley/multi_app_active_record
345
346
  licenses:
346
347
  - MIT
347
348
  metadata: {}
348
- post_install_message:
349
+ post_install_message:
349
350
  rdoc_options: []
350
351
  require_paths:
351
352
  - lib
@@ -360,8 +361,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
360
361
  - !ruby/object:Gem::Version
361
362
  version: '0'
362
363
  requirements: []
363
- rubygems_version: 3.0.6
364
- signing_key:
364
+ rubygems_version: 3.0.3
365
+ signing_key:
365
366
  specification_version: 4
366
367
  summary: Fix functions that are lacking in Active record to be compatible with multi-app
367
368
  databases