forest_admin_datasource_rpc 1.39.4 → 1.40.1

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: 9669ca7d6ada2ac1a34b35eba1bc604bc11cf4872adead7a4c8cd4d0a3d8cfb6
4
- data.tar.gz: c8afa58be8ede31ea330a8fef296e30268c90a0c5747468cc9b8f8c8e98c45b7
3
+ metadata.gz: f91ad4533fc7c233fb03829bc6c41942af5ef0e3e22db69bab2124df3099a681
4
+ data.tar.gz: 1daa791444a0fd7c656cf53a42429c6656d1126b9894928ac2913faf14534d57
5
5
  SHA512:
6
- metadata.gz: 5fd6ad72e39183398f590e7428c118b977861d42849c73509f61a8177e4246d6d96f244389d0740fe712239ac388449f28949772ac7986c16e03b6f7a42556d7
7
- data.tar.gz: b28330a788b3254bd25b45c1a1f663af9afaae6546620223f595ddd2ad35a4089d8c220cbed0247115bc63a026343ee07c8018d30e5626ac3ca631b624e991bd
6
+ metadata.gz: 3201b1c4320983cd477acce87b73686b679a2e9269348c07c13af28e12deee98a39385dc36df3a339cb1a0cf740f4cb688875ae17778d105e63a49dda38175f3
7
+ data.tar.gz: '08c0b351a717560674f147db753e062106ac405b8f8bfeaa7bc3a7f66443efce78ca24bd3e102b45e65c27d892964c22d8378435a0482565bad405faede8fedd'
@@ -28,34 +28,26 @@ module ForestAdminDatasourceRpc
28
28
  @schema[:aggregation_capabilities] = schema[:aggregation_capabilities] if schema[:aggregation_capabilities]
29
29
  end
30
30
 
31
+ FIELD_CLASSES = {
32
+ 'Column' => ForestAdminDatasourceToolkit::Schema::ColumnSchema,
33
+ 'ManyToMany' => ForestAdminDatasourceToolkit::Schema::Relations::ManyToManySchema,
34
+ 'OneToMany' => ForestAdminDatasourceToolkit::Schema::Relations::OneToManySchema,
35
+ 'ManyToOne' => ForestAdminDatasourceToolkit::Schema::Relations::ManyToOneSchema,
36
+ 'OneToOne' => ForestAdminDatasourceToolkit::Schema::Relations::OneToOneSchema,
37
+ 'PolymorphicManyToOne' => ForestAdminDatasourceToolkit::Schema::Relations::PolymorphicManyToOneSchema,
38
+ 'PolymorphicOneToMany' => ForestAdminDatasourceToolkit::Schema::Relations::PolymorphicOneToManySchema,
39
+ 'PolymorphicOneToOne' => ForestAdminDatasourceToolkit::Schema::Relations::PolymorphicOneToOneSchema
40
+ }.freeze
41
+
42
+ KEYWORD_PARAM_KINDS = %i[key keyreq].freeze
43
+
31
44
  def add_fields(fields)
32
45
  fields.each do |field_name, schema|
33
46
  field_name = field_name.to_s
34
- type = schema[:type]
35
- schema.delete(:type)
36
- # remove these
37
- schema.delete(:allow_null)
38
- case type
39
- when 'Column'
40
- add_field(field_name, ForestAdminDatasourceToolkit::Schema::ColumnSchema.new(**schema))
41
- when 'ManyToMany'
42
- add_field(field_name, ForestAdminDatasourceToolkit::Schema::Relations::ManyToManySchema.new(**schema))
43
- when 'OneToMany'
44
- add_field(field_name, ForestAdminDatasourceToolkit::Schema::Relations::OneToManySchema.new(**schema))
45
- when 'ManyToOne'
46
- add_field(field_name, ForestAdminDatasourceToolkit::Schema::Relations::ManyToOneSchema.new(**schema))
47
- when 'OneToOne'
48
- add_field(field_name, ForestAdminDatasourceToolkit::Schema::Relations::OneToOneSchema.new(**schema))
49
- when 'PolymorphicManyToOne'
50
- add_field(field_name,
51
- ForestAdminDatasourceToolkit::Schema::Relations::PolymorphicManyToOneSchema.new(**schema))
52
- when 'PolymorphicOneToMany'
53
- add_field(field_name,
54
- ForestAdminDatasourceToolkit::Schema::Relations::PolymorphicOneToManySchema.new(**schema))
55
- when 'PolymorphicOneToOne'
56
- add_field(field_name,
57
- ForestAdminDatasourceToolkit::Schema::Relations::PolymorphicOneToOneSchema.new(**schema))
58
- end
47
+ klass = FIELD_CLASSES[schema[:type]]
48
+ next unless klass
49
+
50
+ add_field(field_name, klass.new(**accepted_keywords(klass, schema)))
59
51
  end
60
52
  end
61
53
 
@@ -175,6 +167,18 @@ module ForestAdminDatasourceRpc
175
167
  @base_params.merge(extra_params)
176
168
  end
177
169
 
170
+ # Filters a deserialized field payload down to whatever klass#initialize actually accepts,
171
+ # instead of deleting specific keys by name -- an attribute the RPC agent's schema
172
+ # serialization adds later (or a version mismatch between agents) shouldn't crash
173
+ # hydration on this side.
174
+ def accepted_keywords(klass, schema)
175
+ accepted = klass.instance_method(:initialize).parameters.filter_map do |kind, name|
176
+ name if KEYWORD_PARAM_KINDS.include?(kind)
177
+ end
178
+
179
+ schema.slice(*accepted)
180
+ end
181
+
178
182
  def encode_form_data(data)
179
183
  data.to_h do |key, value|
180
184
  if value.is_a?(Hash) && value.key?('buffer')
@@ -1,3 +1,3 @@
1
1
  module ForestAdminDatasourceRpc
2
- VERSION = "1.39.4"
2
+ VERSION = "1.40.1"
3
3
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: forest_admin_datasource_rpc
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.39.4
4
+ version: 1.40.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Matthieu
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: exe
11
11
  cert_chain: []
12
- date: 2026-08-26 00:00:00.000000000 Z
12
+ date: 2026-08-28 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: base64