iron_trail 0.1.2 → 0.1.4
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/iron_trail/change_model_concern.rb +10 -4
- data/lib/iron_trail/current.rb +27 -0
- data/lib/iron_trail/query_transformer.rb +1 -1
- data/lib/iron_trail/version.rb +1 -1
- data/lib/iron_trail.rb +3 -11
- metadata +3 -17
- data/lib/iron_trail/metadata_store.rb +0 -29
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 205a181e1b361753b39576a57dbee4503b62573314c52d91044acbdcd60c26b0
|
4
|
+
data.tar.gz: 41f13486979881ee2e23b5247f949c23bddca34f27d3aa5bbaf348f32e9a1673
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: df308cd9a427c4069178c7304c9b823070db8474d9556a45c9d4a1eb5d0c3edfef70a3d250cc564648c96ce44e57576fdb78e2b3fe30a9ce4682f6824b56497f
|
7
|
+
data.tar.gz: 448ffb8f0440aa63a927b0e41925fd63a48ed1b2b50b68c7f2b205569c3e2de250cbc9f44ca5297bf06c3b8d9d53517796d16afe966fff589779f31c959c4189
|
@@ -24,14 +24,20 @@ module IronTrail
|
|
24
24
|
private
|
25
25
|
|
26
26
|
def _where_object_changes(ary_index, args)
|
27
|
+
ary_index = Integer(ary_index)
|
27
28
|
scope = all
|
28
29
|
|
29
30
|
args.each do |col_name, value|
|
30
|
-
|
31
|
-
|
32
|
-
|
31
|
+
col_delta = "rec_delta->#{connection.quote(col_name)}"
|
32
|
+
node = if value == nil
|
33
|
+
::Arel::Nodes::SqlLiteral.new("#{col_delta}->#{ary_index} = 'null'::jsonb")
|
34
|
+
else
|
35
|
+
::Arel::Nodes::SqlLiteral.new("#{col_delta}->>#{ary_index}").eq(
|
36
|
+
::Arel::Nodes::BindParam.new(value.to_s)
|
33
37
|
)
|
34
|
-
|
38
|
+
end
|
39
|
+
|
40
|
+
scope.where!(node)
|
35
41
|
end
|
36
42
|
|
37
43
|
scope
|
@@ -0,0 +1,27 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module IronTrail
|
4
|
+
class Current < ActiveSupport::CurrentAttributes
|
5
|
+
attribute :metadata
|
6
|
+
|
7
|
+
def self.store_metadata(key, value)
|
8
|
+
self.metadata ||= {}
|
9
|
+
self.metadata[key] = value
|
10
|
+
end
|
11
|
+
|
12
|
+
def self.merge_metadata(keys, merge_hash)
|
13
|
+
self.metadata ||= {}
|
14
|
+
base = self.metadata
|
15
|
+
keys.each do |key|
|
16
|
+
if base.key?(key)
|
17
|
+
base = base[key]
|
18
|
+
else
|
19
|
+
h = {}
|
20
|
+
base[key] = h
|
21
|
+
base = h
|
22
|
+
end
|
23
|
+
end
|
24
|
+
base.merge!(merge_hash)
|
25
|
+
end
|
26
|
+
end
|
27
|
+
end
|
@@ -18,7 +18,7 @@ module IronTrail
|
|
18
18
|
|
19
19
|
def create_query_transformer_proc
|
20
20
|
proc do |query, adapter|
|
21
|
-
current_metadata = IronTrail.
|
21
|
+
current_metadata = IronTrail::Current.metadata
|
22
22
|
next query unless adapter.write_query?(query) && (current_metadata.is_a?(Hash) && !current_metadata.empty?)
|
23
23
|
|
24
24
|
metadata = JSON.dump(current_metadata)
|
data/lib/iron_trail/version.rb
CHANGED
data/lib/iron_trail.rb
CHANGED
@@ -3,14 +3,13 @@
|
|
3
3
|
require 'singleton'
|
4
4
|
require 'json'
|
5
5
|
require 'forwardable'
|
6
|
-
require 'request_store'
|
7
6
|
|
8
7
|
require 'iron_trail/version'
|
9
8
|
require 'iron_trail/config'
|
10
9
|
require 'iron_trail/db_functions'
|
11
10
|
require 'iron_trail/migration'
|
12
11
|
|
13
|
-
require 'iron_trail/
|
12
|
+
require 'iron_trail/current'
|
14
13
|
require 'iron_trail/query_transformer'
|
15
14
|
|
16
15
|
require 'iron_trail/association'
|
@@ -73,16 +72,9 @@ module IronTrail
|
|
73
72
|
@query_transformer.setup_active_record
|
74
73
|
end
|
75
74
|
|
76
|
-
|
77
|
-
@store_instance ||= MetadataStore.new
|
78
|
-
end
|
79
|
-
|
80
|
-
def_delegators :store_instance,
|
75
|
+
def_delegators ::IronTrail::Current,
|
81
76
|
:store_metadata,
|
82
|
-
:merge_metadata
|
83
|
-
:current_metadata
|
84
|
-
|
85
|
-
|
77
|
+
:merge_metadata
|
86
78
|
end
|
87
79
|
end
|
88
80
|
|
metadata
CHANGED
@@ -1,13 +1,13 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: iron_trail
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.4
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- André Diego Piske
|
8
8
|
bindir: bin
|
9
9
|
cert_chain: []
|
10
|
-
date: 2025-02-
|
10
|
+
date: 2025-02-24 00:00:00.000000000 Z
|
11
11
|
dependencies:
|
12
12
|
- !ruby/object:Gem::Dependency
|
13
13
|
name: rails
|
@@ -23,20 +23,6 @@ dependencies:
|
|
23
23
|
- - ">="
|
24
24
|
- !ruby/object:Gem::Version
|
25
25
|
version: '7.1'
|
26
|
-
- !ruby/object:Gem::Dependency
|
27
|
-
name: request_store
|
28
|
-
requirement: !ruby/object:Gem::Requirement
|
29
|
-
requirements:
|
30
|
-
- - "~>"
|
31
|
-
- !ruby/object:Gem::Version
|
32
|
-
version: '1.5'
|
33
|
-
type: :runtime
|
34
|
-
prerelease: false
|
35
|
-
version_requirements: !ruby/object:Gem::Requirement
|
36
|
-
requirements:
|
37
|
-
- - "~>"
|
38
|
-
- !ruby/object:Gem::Version
|
39
|
-
version: '1.5'
|
40
26
|
- !ruby/object:Gem::Dependency
|
41
27
|
name: appraisal
|
42
28
|
requirement: !ruby/object:Gem::Requirement
|
@@ -136,9 +122,9 @@ files:
|
|
136
122
|
- lib/iron_trail/change_model_concern.rb
|
137
123
|
- lib/iron_trail/collection_proxy_mixin.rb
|
138
124
|
- lib/iron_trail/config.rb
|
125
|
+
- lib/iron_trail/current.rb
|
139
126
|
- lib/iron_trail/db_functions.rb
|
140
127
|
- lib/iron_trail/irontrail_log_row_function.sql
|
141
|
-
- lib/iron_trail/metadata_store.rb
|
142
128
|
- lib/iron_trail/migration.rb
|
143
129
|
- lib/iron_trail/model.rb
|
144
130
|
- lib/iron_trail/query_transformer.rb
|
@@ -1,29 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
module IronTrail
|
4
|
-
class MetadataStore
|
5
|
-
def store_metadata(key, value)
|
6
|
-
RequestStore.store[:irontrail_metadata] ||= {}
|
7
|
-
RequestStore.store[:irontrail_metadata][key] = value
|
8
|
-
end
|
9
|
-
|
10
|
-
def merge_metadata(keys, merge_hash)
|
11
|
-
RequestStore.store[:irontrail_metadata] ||= {}
|
12
|
-
base = RequestStore.store[:irontrail_metadata]
|
13
|
-
keys.each do |key|
|
14
|
-
if base.key?(key)
|
15
|
-
base = base[key]
|
16
|
-
else
|
17
|
-
h = {}
|
18
|
-
base[key] = h
|
19
|
-
base = h
|
20
|
-
end
|
21
|
-
end
|
22
|
-
base.merge!(merge_hash)
|
23
|
-
end
|
24
|
-
|
25
|
-
def current_metadata
|
26
|
-
RequestStore.store[:irontrail_metadata]
|
27
|
-
end
|
28
|
-
end
|
29
|
-
end
|