better_record 0.23.5 → 0.25.0

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
  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