adaptive_alias 1.2.1 → 1.3.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:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: c77a56c9682de40b3f7c0f8a9da86f3fe2e263b9007ce7fc3f629de1e32a1306
|
4
|
+
data.tar.gz: 4f1e927143e3eaafdaf4930adad533e5aade02a2bc08ba2d893783cc11427b61
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 8e4abb047b36b3d433f6b41059ed0d687d39746c87bd272c19ebab3dc99dfc3f4ab21c92a0137cb67b49dd8610d8187226bcb83e4e9ee21dbd0a24356b7559ed
|
7
|
+
data.tar.gz: 45865c03b79c4e1e675c70feed424eabd79313e289fcde60397b36fe83c5ae76cd5eb65ef0ef37ea12110972007708edec31ce2f3d0b2cfd3fdb6507b54e9fd1
|
data/CHANGELOG.md
CHANGED
@@ -1,5 +1,10 @@
|
|
1
1
|
## Change Log
|
2
2
|
|
3
|
+
### [v1.2.1](https://github.com/khiav223577/adaptive_alias/compare/v1.2.0...v1.2.1) 2022/10/13
|
4
|
+
- [#31](https://github.com/khiav223577/adaptive_alias/pull/31) [Fix] Deal with `exists?` (@khiav223577)
|
5
|
+
- [#30](https://github.com/khiav223577/adaptive_alias/pull/30) [Test] Add test cases to test raw sql query (@khiav223577)
|
6
|
+
- [#29](https://github.com/khiav223577/adaptive_alias/pull/29) [Fix] Rescue queries fired by `update_all` (@khiav223577)
|
7
|
+
|
3
8
|
### [v1.2.0](https://github.com/khiav223577/adaptive_alias/compare/v1.1.2...v1.2.0) 2022/10/12
|
4
9
|
- [#28](https://github.com/khiav223577/adaptive_alias/pull/28) [Fix] Deal with OR-query (@khiav223577)
|
5
10
|
- [#27](https://github.com/khiav223577/adaptive_alias/pull/27) [Enhance] make sure `mark_removable` will be called when manually remove patch (@khiav223577)
|
@@ -2,14 +2,14 @@ module AdaptiveAlias
|
|
2
2
|
module Hooks
|
3
3
|
module ActiveRecordPersistence
|
4
4
|
def _update_record
|
5
|
-
AdaptiveAlias.rescue_statement_invalid(
|
5
|
+
AdaptiveAlias.rescue_statement_invalid(model_klass: self.class) do
|
6
6
|
attribute_set_fix!
|
7
7
|
super
|
8
8
|
end
|
9
9
|
end
|
10
10
|
|
11
11
|
def _create_record(*)
|
12
|
-
AdaptiveAlias.rescue_statement_invalid(
|
12
|
+
AdaptiveAlias.rescue_statement_invalid(model_klass: self.class) do
|
13
13
|
attribute_set_fix!
|
14
14
|
super
|
15
15
|
end
|
@@ -0,0 +1,34 @@
|
|
1
|
+
require 'active_record'
|
2
|
+
|
3
|
+
module AdaptiveAlias
|
4
|
+
module Hooks
|
5
|
+
module InsertAll
|
6
|
+
def initialize(*, **)
|
7
|
+
super
|
8
|
+
|
9
|
+
adjust_keys_by_attribute_aliases
|
10
|
+
end
|
11
|
+
|
12
|
+
def execute
|
13
|
+
AdaptiveAlias.rescue_statement_invalid(model_klass: @model) do
|
14
|
+
adjust_keys_by_attribute_aliases
|
15
|
+
super
|
16
|
+
end
|
17
|
+
end
|
18
|
+
|
19
|
+
private
|
20
|
+
|
21
|
+
def adjust_keys_by_attribute_aliases
|
22
|
+
if @model.attribute_aliases.keys.any?{|s| @keys.include?(s) }
|
23
|
+
@keys = @keys.map{|s| @model.attribute_aliases[s] || s }.to_set
|
24
|
+
@inserts = @inserts.map{|insert| insert.transform_keys{|s| @model.attribute_aliases[s.to_s] || s } }
|
25
|
+
@keys_including_timestamps = nil
|
26
|
+
end
|
27
|
+
end
|
28
|
+
end
|
29
|
+
end
|
30
|
+
end
|
31
|
+
|
32
|
+
class ActiveRecord::InsertAll
|
33
|
+
prepend AdaptiveAlias::Hooks::InsertAll
|
34
|
+
end
|
@@ -69,7 +69,7 @@ module AdaptiveAlias
|
|
69
69
|
end
|
70
70
|
end
|
71
71
|
|
72
|
-
@check_matched = proc do |relation, reflection,
|
72
|
+
@check_matched = proc do |relation, reflection, model_klass, error|
|
73
73
|
next false if not patch.removable
|
74
74
|
|
75
75
|
# Error highlight behavior in Ruby 3.1 pollutes the error message
|
@@ -79,8 +79,8 @@ module AdaptiveAlias
|
|
79
79
|
if ambiguous
|
80
80
|
next false if relation and klass.table_name != relation.klass.table_name
|
81
81
|
next false if reflection and klass.table_name != reflection.klass.table_name
|
82
|
-
next false if
|
83
|
-
next false if !relation and !reflection and !
|
82
|
+
next false if model_klass and klass.table_name != model_klass.table_name
|
83
|
+
next false if !relation and !reflection and !model_klass
|
84
84
|
end
|
85
85
|
|
86
86
|
next false if not expected_association_err_msgs.include?(error_msg) and not ambiguous
|
data/lib/adaptive_alias.rb
CHANGED
@@ -14,6 +14,7 @@ require 'adaptive_alias/hooks/relation'
|
|
14
14
|
require 'adaptive_alias/hooks/active_record_core'
|
15
15
|
require 'adaptive_alias/hooks/active_record_persistence'
|
16
16
|
require 'adaptive_alias/hooks/calculations'
|
17
|
+
require 'adaptive_alias/hooks/insert_all'
|
17
18
|
|
18
19
|
module AdaptiveAlias
|
19
20
|
@log_interval = 10 * 60
|
@@ -42,14 +43,14 @@ module AdaptiveAlias
|
|
42
43
|
end
|
43
44
|
end
|
44
45
|
|
45
|
-
def rescue_statement_invalid(relation: nil, reflection: nil,
|
46
|
+
def rescue_statement_invalid(relation: nil, reflection: nil, model_klass: nil, &block)
|
46
47
|
yield
|
47
48
|
rescue ActiveRecord::StatementInvalid => error
|
48
|
-
_key, patch = AdaptiveAlias.current_patches.find{|_key, patch| patch.check_matched.call(relation, reflection,
|
49
|
+
_key, patch = AdaptiveAlias.current_patches.find{|_key, patch| patch.check_matched.call(relation, reflection, model_klass, error) }
|
49
50
|
raise error if patch == nil
|
50
51
|
|
51
52
|
patch.remove_and_fix_association.call(relation, reflection) do
|
52
|
-
return rescue_statement_invalid(relation: relation, reflection: reflection,
|
53
|
+
return rescue_statement_invalid(relation: relation, reflection: reflection, model_klass: model_klass, &block)
|
53
54
|
end
|
54
55
|
end
|
55
56
|
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: adaptive_alias
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.
|
4
|
+
version: 1.3.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- khiav reoy
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2022-10-
|
11
|
+
date: 2022-10-20 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -132,6 +132,7 @@ files:
|
|
132
132
|
- lib/adaptive_alias/hooks/active_record_persistence.rb
|
133
133
|
- lib/adaptive_alias/hooks/association.rb
|
134
134
|
- lib/adaptive_alias/hooks/calculations.rb
|
135
|
+
- lib/adaptive_alias/hooks/insert_all.rb
|
135
136
|
- lib/adaptive_alias/hooks/relation.rb
|
136
137
|
- lib/adaptive_alias/patches/backward_patch.rb
|
137
138
|
- lib/adaptive_alias/patches/base.rb
|