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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: f67019754098a19e12ca5bf753f081e219f6586e3624ef1baf6369e70a9e0d72
4
- data.tar.gz: e8acc199e3135380e404662bf6a4e5622efe18a4c78fac2d9f70a24f02ee0e7a
3
+ metadata.gz: 205a181e1b361753b39576a57dbee4503b62573314c52d91044acbdcd60c26b0
4
+ data.tar.gz: 41f13486979881ee2e23b5247f949c23bddca34f27d3aa5bbaf348f32e9a1673
5
5
  SHA512:
6
- metadata.gz: 925b5f28134a23ab70b10880fbfb40a7b3f7d431d287f5f5b000cdf7c11f07ca743932a11320a59e6c3fd5f1dda874e305f1d6d2457a8b451f23605433bec7b1
7
- data.tar.gz: 6c074aadae308632cabbd37edb01f6c77607c4dabcac80cfbcf505a4793aace2b4a96a2976cba9a03dc2de40023f5bba948e517694508411a8d4bb9fab5426d5
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
- scope.where!(
31
- ::Arel::Nodes::SqlLiteral.new("rec_delta->#{connection.quote col_name}->>#{Integer(ary_index)}").eq(
32
- ::Arel::Nodes::BindParam.new(value)
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.current_metadata
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)
@@ -1,5 +1,5 @@
1
1
  # frozen_literal_string: true
2
2
 
3
3
  module IronTrail
4
- VERSION = '0.1.2'
4
+ VERSION = '0.1.4'
5
5
  end
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/metadata_store'
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
- def store_instance
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.2
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-11 00:00:00.000000000 Z
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