Skip to content

Commit 7f57f25

Browse files
authored
Revert "fix(filters): properly parse filters from request params" (#746)
Revert "fix(filters): properly parse filters from request params (#743)" This reverts commit 801f5d1.
1 parent 801f5d1 commit 7f57f25

File tree

2 files changed

+7
-78
lines changed

2 files changed

+7
-78
lines changed

app/services/forest_liana/resources_getter.rb

Lines changed: 3 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -198,29 +198,15 @@ def field_names_requested
198198

199199
def extract_associations_from_filter
200200
associations = []
201-
202-
filters = @params[:filters]
203-
filters = JSON.parse(filters) if filters.is_a?(String)
204-
205-
conditions = []
206-
207-
if filters.is_a?(Hash) && filters.key?('conditions')
208-
conditions = filters['conditions']
209-
elsif filters.is_a?(Hash) && filters.key?('field')
210-
conditions = [filters]
211-
end
212-
213-
conditions.each do |condition|
214-
field = condition['field']
215-
if field&.include?(':')
201+
@params[:filter]&.each do |field, _|
202+
if field.include?(':')
216203
associations << field.split(':').first.to_sym
217204
@count_needs_includes = true
218205
end
219206
end
220-
221207
@count_needs_includes = true if @params[:search]
222208

223-
associations.uniq
209+
associations
224210
end
225211

226212
def prepare_query

spec/services/forest_liana/resources_getter_spec.rb

Lines changed: 4 additions & 61 deletions
Original file line numberDiff line numberDiff line change
@@ -309,7 +309,7 @@ def association_connection.current_database
309309
describe 'when filtering on an ambiguous field' do
310310
let(:resource) { Tree }
311311
let(:pageSize) { 5 }
312-
let(:fields) { { 'Tree' => 'id,name', 'cutter' => 'id' } }
312+
let(:fields) { { 'Tree' => 'id' } }
313313
let(:filters) { {
314314
aggregator: 'and',
315315
conditions: [{
@@ -332,6 +332,7 @@ def association_connection.current_database
332332
expect(count).to eq 1
333333
expect(records.first.id).to eq 3
334334
expect(records.first.name).to eq 'Apple Tree'
335+
expect(records.first.cutter.name).to eq 'Michel'
335336
end
336337
end
337338

@@ -378,7 +379,7 @@ def association_connection.current_database
378379
describe 'when sorting on an ambiguous field name with a filter' do
379380
let(:resource) { Tree }
380381
let(:sort) { '-name' }
381-
let(:fields) { { 'Tree' => 'id,name' } }
382+
let(:fields) { { 'Tree' => 'id' } }
382383
let(:filters) { {
383384
field: 'cutter:name',
384385
operator: 'equal',
@@ -416,7 +417,7 @@ def association_connection.current_database
416417

417418
describe 'when filtering on an updated_at field of an associated collection' do
418419
let(:resource) { Tree }
419-
let(:fields) { { 'Tree' => 'id,name' } }
420+
let(:fields) { { 'Tree' => 'id' } }
420421
let(:filters) { {
421422
field: 'island:updated_at',
422423
operator: 'previous_year'
@@ -591,64 +592,6 @@ def association_connection.current_database
591592
end
592593
end
593594

594-
describe '#extract_associations_from_filter' do
595-
let(:resource) { Tree }
596-
597-
before { init_scopes }
598-
599-
context 'with a single filter as JSON string' do
600-
let(:filters) {
601-
{
602-
field: 'island:updated_at',
603-
operator: 'equal',
604-
value: '2024-01-01'
605-
}.to_json
606-
}
607-
608-
it 'extracts the correct association' do
609-
expect(getter.send(:extract_associations_from_filter)).to eq [:island]
610-
end
611-
end
612-
613-
context 'with grouped conditions as JSON string' do
614-
let(:filters) {
615-
{
616-
aggregator: 'and',
617-
conditions: [
618-
{ field: 'island:updated_at', operator: 'equal', value: '2024-01-01' },
619-
{ field: 'owner:name', operator: 'equal', value: 'Michel' },
620-
{ field: 'id', operator: 'present', value: nil }
621-
]
622-
}.to_json
623-
}
624-
625-
it 'extracts all unique associations' do
626-
expect(getter.send(:extract_associations_from_filter)).to match_array [:island, :owner]
627-
end
628-
end
629-
630-
context 'when filters has no association field' do
631-
let(:filters) {
632-
{
633-
field: 'id',
634-
operator: 'equal',
635-
value: 1
636-
}.to_json
637-
}
638-
639-
it 'returns an empty array' do
640-
expect(getter.send(:extract_associations_from_filter)).to eq []
641-
end
642-
end
643-
644-
context 'when filters is nil' do
645-
let(:filters) { nil }
646-
647-
it 'returns an empty array' do
648-
expect(getter.send(:extract_associations_from_filter)).to eq []
649-
end
650-
end
651-
end
652595
end
653596
end
654597
end

0 commit comments

Comments
 (0)