structured_store 1.1.1 → 1.1.2

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: bb74ea9b2d3988a8aaa950245e9001ae8f1175a32c1642f2bc98a14d9a6700fb
4
- data.tar.gz: e1d2b20eded52f15628c47ca1ffcad4c3d550d117ffb28d00b80e6c1b2b7d16d
3
+ metadata.gz: aa0ea30c53e6654f9332650da69b066c2af4d69c6a3007e69d735c554cec8b8a
4
+ data.tar.gz: c612007e1a63d0805b71ef2f2ef106e13480a2866e6a7170fdeeab277a590997
5
5
  SHA512:
6
- metadata.gz: 19272c1fd3e3a88cbd384dba293ecc014e8430c0366e4c17ebfced7d289dd6bde49379e343b2ca18458157c392dca537f75405bdbc10b96a5fdffe5e72fe961c
7
- data.tar.gz: acb2617359e6a4e8853a5684344b4cefeb2dac2c58f5f396a585aad8aefeeb700d487eaceeaf69d29a8057777b7151c5986ff3a4ff7a0d3fc05f5609154eb1d2
6
+ metadata.gz: d904be6d35ad841db181ca8c27b299a2140efadc5b7b19ef82f49a0c6b3c96d35680debf016ca990bda9e8fca2af05b28820630226136e2a063ac2b9b80510f0
7
+ data.tar.gz: 909365fad19af689d4e5694a55bd0e0977d14b0124c0d49d0c89aee1a39e2f82b8cd153a97cc1867ab563bd63ed663c76209ee8b22f7c4249f395f89387918c4
@@ -159,7 +159,8 @@ module StructuredStore
159
159
  @property_resolvers ||= {}
160
160
  @property_resolvers[column_name] ||= json_schema_properties(column_name).keys.index_with do |property_name|
161
161
  StructuredStore::RefResolvers::Registry.matching_resolver(schema_inspector(column_name),
162
- property_name)
162
+ property_name,
163
+ { column_name: column_name })
163
164
  end
164
165
  end
165
166
 
@@ -16,9 +16,12 @@ module StructuredStore
16
16
  # @return [Proc] a lambda that defines the attribute on the singleton class
17
17
  # @raise [RuntimeError] if the property type is unsupported
18
18
  def define_attribute
19
- # Capture the property name in a local variable for closure
19
+ # Capture the property name and store column name in local variables for closure.
20
+ # context[:column_name] is set by Storable#property_resolvers; fall back to 'store'
21
+ # for any resolver instantiated without that context (e.g. in isolation in tests).
20
22
  prop_name = property_name
21
- resolver = self
23
+ col_name = (context[:column_name] || 'store').to_s
24
+ resolver = self
22
25
 
23
26
  # Define the attribute on the singleton class of the object
24
27
  lambda do |object|
@@ -26,11 +29,11 @@ module StructuredStore
26
29
 
27
30
  # Define custom getter and setter methods
28
31
  object.singleton_class.define_method(prop_name) do
29
- resolver.send(:cast_stored_value, store, prop_name, converter)
32
+ resolver.send(:cast_stored_value, send(col_name), prop_name, converter)
30
33
  end
31
34
 
32
35
  object.singleton_class.define_method("#{prop_name}=") do |value|
33
- resolver.send(:serialize_value_to_store, self, prop_name, value, converter)
36
+ resolver.send(:serialize_value_to_store, self, col_name, prop_name, value, converter)
34
37
  end
35
38
  end
36
39
  end
@@ -67,13 +70,13 @@ module StructuredStore
67
70
  end
68
71
 
69
72
  # Serializes an input value to the store as a hash
70
- def serialize_value_to_store(object, prop_name, value, converter)
73
+ def serialize_value_to_store(object, col_name, prop_name, value, converter)
71
74
  # Initialize store as empty hash if nil
72
- object.store ||= {}
73
- return object.store[prop_name] = nil if value.blank?
75
+ object.send("#{col_name}=", {}) unless object.send(col_name)
76
+ return object.send(col_name)[prop_name] = nil if value.blank?
74
77
 
75
78
  date1, date2 = converter.convert_to_dates(value)
76
- object.store[prop_name] = {
79
+ object.send(col_name)[prop_name] = {
77
80
  'date1' => date1&.to_fs(:db),
78
81
  'date2' => date2&.to_fs(:db)
79
82
  }
@@ -1,3 +1,3 @@
1
1
  module StructuredStore
2
- VERSION = '1.1.1'.freeze
2
+ VERSION = '1.1.2'.freeze
3
3
  end
metadata CHANGED
@@ -1,13 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: structured_store
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.1.1
4
+ version: 1.1.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Tim Gentry
8
+ autorequire:
8
9
  bindir: bin
9
10
  cert_chain: []
10
- date: 1980-01-02 00:00:00.000000000 Z
11
+ date: 2026-02-24 00:00:00.000000000 Z
11
12
  dependencies:
12
13
  - !ruby/object:Gem::Dependency
13
14
  name: json_schemer
@@ -88,6 +89,7 @@ metadata:
88
89
  source_code_uri: https://github.com/HealthDataInsight/structured_store
89
90
  changelog_uri: https://github.com/HealthDataInsight/structured_store/blob/main/CHANGELOG.md
90
91
  rubygems_mfa_required: 'true'
92
+ post_install_message:
91
93
  rdoc_options: []
92
94
  require_paths:
93
95
  - lib
@@ -102,7 +104,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
102
104
  - !ruby/object:Gem::Version
103
105
  version: '0'
104
106
  requirements: []
105
- rubygems_version: 3.6.9
107
+ rubygems_version: 3.3.26
108
+ signing_key:
106
109
  specification_version: 4
107
110
  summary: Store JSON structured using versioned JSON Schemas.
108
111
  test_files: []