forest_admin_datasource_active_record 1.0.0.pre.beta.97 → 1.0.0.pre.beta.98

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: 14b38a52aa95adb40477a63cc126e1c0ca9b64deac752faab651dc41b48e7589
4
- data.tar.gz: 99517b7674002b976f641b980c8f132a0f11dd98f5cb05ce4e350ba409201c25
3
+ metadata.gz: 4f2d336f05552e180ef83b936bebef7078273ec484b4a8e915da2b4c4becf131
4
+ data.tar.gz: b01560dddb4f847b82059714dee9cf9c437be87491e4195a85d69ff9f2091fa9
5
5
  SHA512:
6
- metadata.gz: bba918fc280643db5e5ae2f85ba4c07524e14aeac607fe3af60509ef01637190859f63c7a7edb2cfbafe124d859a937c08a8c0b1bac64397be11179967b54a4d
7
- data.tar.gz: be1c7702d6830c94e7370e437270b495130989a147fb874a95562f598a309adcb609e3f687bfc29ffc07f4fc15f1cb48b458c471442b8089989a99a54b4f3d41
6
+ metadata.gz: 44d467306a01e9a5ea0c70a59c035ff253df538198457a28c3e91ea858b0071d1bb8b9e80b62a849a5bbb554562373c40f75736d1951c279dd417102a5674407
7
+ data.tar.gz: 7b949b1b0d229f02472ee7c40ec1a2a91c0d63a6f788ea7a445c2ffbcaaff83535df9e5ccb4035a1011adf632cb43d2ef53ef9cf8be2a22053fd9340d6a4120e
@@ -3,7 +3,7 @@ module ForestAdminDatasourceActiveRecord
3
3
  class Query
4
4
  include ForestAdminDatasourceToolkit::Components::Query::ConditionTree
5
5
 
6
- attr_reader :query
6
+ attr_reader :query, :select
7
7
 
8
8
  def initialize(collection, projection, filter)
9
9
  @collection = collection
@@ -15,7 +15,7 @@ module ForestAdminDatasourceActiveRecord
15
15
  end
16
16
 
17
17
  def build
18
- build_select
18
+ build_select(@collection, @projection)
19
19
  apply_filter
20
20
  apply_select
21
21
  end
@@ -92,20 +92,26 @@ module ForestAdminDatasourceActiveRecord
92
92
  @query
93
93
  end
94
94
 
95
- def build_select
96
- unless @projection.nil?
97
- @select += @projection.columns.map { |field| "#{@collection.model.table_name}.#{field}" }
98
- @projection.relations.each_key do |relation|
99
- relation_schema = @collection.schema[:fields][relation]
100
- @select << if ['OneToOne', 'PolymorphicOneToOne'].include?(relation_schema.type)
101
- "#{@collection.model.table_name}.#{relation_schema.origin_key_target}"
95
+ def build_select(collection, projection)
96
+ return if projection.nil?
97
+
98
+ if collection.model.table_name == @collection.model.table_name
99
+ @select += projection.columns.map { |field| "#{collection.model.table_name}.#{field}" }
100
+ end
101
+
102
+ one_to_one_relations = %w[OneToOne PolymorphicOneToOne]
103
+ projection.relations.each do |relation_name, sub_projection|
104
+ relation_schema = collection.schema[:fields][relation_name]
105
+ if collection.model.table_name == @collection.model.table_name
106
+ @select << if one_to_one_relations.include?(relation_schema.type)
107
+ "#{collection.model.table_name}.#{relation_schema.origin_key_target}"
102
108
  else
103
- "#{@collection.model.table_name}.#{relation_schema.foreign_key}"
109
+ "#{collection.model.table_name}.#{relation_schema.foreign_key}"
104
110
  end
105
111
  end
106
- end
107
112
 
108
- @query
113
+ build_select(collection.datasource.get_collection(relation_schema.foreign_collection), sub_projection)
114
+ end
109
115
  end
110
116
 
111
117
  def apply_select
@@ -149,6 +155,7 @@ module ForestAdminDatasourceActiveRecord
149
155
 
150
156
  result[relation.to_sym] = formatted_relations
151
157
  end
158
+
152
159
  result
153
160
  end
154
161
  end
@@ -1,3 +1,3 @@
1
1
  module ForestAdminDatasourceActiveRecord
2
- VERSION = "1.0.0-beta.97"
2
+ VERSION = "1.0.0-beta.98"
3
3
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: forest_admin_datasource_active_record
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.0.pre.beta.97
4
+ version: 1.0.0.pre.beta.98
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: 2025-02-24 00:00:00.000000000 Z
12
+ date: 2025-02-25 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: activerecord