jsonapi-resources 0.10.0 → 0.10.1

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: be0a26c90f490d3ce79ad0acbba2659a3bb76dd8a83c8d1ba1dbcd1cacb6f13e
4
- data.tar.gz: '069228b97bd90bb91adb6d2b0eb2271b91cd2a707ab6697b0c6b244e43309f5a'
3
+ metadata.gz: cb454d152ad0d4006c635c266ef12a4b5bc01d2d1f90768010545beb1c706509
4
+ data.tar.gz: 453cbec4004419cc4ed2f2cb9fd5b85879b6348dc1be033d44c19b8f7b6a74a7
5
5
  SHA512:
6
- metadata.gz: 9b423d0a8a991a22fcedcf9a4430629717d086f2ab26fa74a6b740240725b8cf10871c3e88b8b25b1253fa1517852794ec2e04382dac36c81df269e1e5056f1e
7
- data.tar.gz: a47a26887e61fe572fe2b4804dbebc4be42bea8bd0ae6a698125bb572c533f72b7a87b564d1ad8e290f8412ce3d7329df75c08b85ba6e7e1d6e15bbbd83be766
6
+ metadata.gz: 34d71bab88b0d790e160514373fda6d0328c405662995f9235663f648994f9e984f2f1327846e9713cb2777d66d4cc838401253cd842b96cc3485cf61e3cc776
7
+ data.tar.gz: e14d5b344c99beb03229c7f98800ea84de86fccc86fddb581df6341d210fc962669b83051a93c1ed4665c4019d5f76d96ca225844a4b0a53c34c212da08d656c
@@ -153,6 +153,11 @@ module JSONAPI
153
153
  pluck_fields << Arel.sql("#{concat_table_field(resource_table_alias, model_field[:name])} AS #{resource_table_alias}_#{model_field[:name]}")
154
154
  end
155
155
 
156
+ sort_fields = options.dig(:_relation_helper_options, :sort_fields)
157
+ sort_fields.try(:each) do |field|
158
+ pluck_fields << Arel.sql(field)
159
+ end
160
+
156
161
  fragments = {}
157
162
  rows = records.pluck(*pluck_fields)
158
163
  rows.each do |row|
@@ -445,6 +450,11 @@ module JSONAPI
445
450
  pluck_fields << Arel.sql("#{concat_table_field(resource_table_alias, model_field[:name])} AS #{resource_table_alias}_#{model_field[:name]}")
446
451
  end
447
452
 
453
+ sort_fields = options.dig(:_relation_helper_options, :sort_fields)
454
+ sort_fields.try(:each) do |field|
455
+ pluck_fields << Arel.sql(field)
456
+ end
457
+
448
458
  fragments = {}
449
459
  rows = records.distinct.pluck(*pluck_fields)
450
460
  rows.each do |row|
@@ -680,24 +690,23 @@ module JSONAPI
680
690
  paginator: nil,
681
691
  options: {})
682
692
 
683
- opts = options.dup
684
- records = resource_klass.apply_joins(records, join_manager, opts)
693
+ options[:_relation_helper_options] = { join_manager: join_manager, sort_fields: [] }
694
+
695
+ records = resource_klass.apply_joins(records, join_manager, options)
685
696
 
686
697
  if primary_keys
687
698
  records = records.where(_primary_key => primary_keys)
688
699
  end
689
700
 
690
- opts[:join_manager] = join_manager
691
-
692
701
  unless filters.empty?
693
- records = resource_klass.filter_records(records, filters, opts)
702
+ records = resource_klass.filter_records(records, filters, options)
694
703
  end
695
704
 
696
705
  if sort_primary
697
706
  records = records.order(_primary_key => :asc)
698
707
  else
699
708
  order_options = resource_klass.construct_order_options(sort_criteria)
700
- records = resource_klass.sort_records(records, order_options, opts)
709
+ records = resource_klass.sort_records(records, order_options, options)
701
710
  end
702
711
 
703
712
  if paginator
@@ -731,12 +740,16 @@ module JSONAPI
731
740
 
732
741
  strategy = _allowed_sort.fetch(field.to_sym, {})[:apply]
733
742
 
743
+ options[:_relation_helper_options] ||= {}
744
+ options[:_relation_helper_options][:sort_fields] ||= []
745
+
734
746
  if strategy
735
747
  records = call_method_or_proc(strategy, records, direction, context)
736
748
  else
737
- join_manager = options[:join_manager]
738
-
739
- records = records.order(Arel.sql("#{get_aliased_field(field, join_manager)} #{direction}"))
749
+ join_manager = options.dig(:_relation_helper_options, :join_manager)
750
+ sort_field = join_manager ? get_aliased_field(field, join_manager) : field
751
+ options[:_relation_helper_options][:sort_fields].push("#{sort_field}")
752
+ records = records.order(Arel.sql("#{sort_field} #{direction}"))
740
753
  end
741
754
  records
742
755
  end
@@ -825,8 +838,9 @@ module JSONAPI
825
838
  if strategy
826
839
  records = call_method_or_proc(strategy, records, value, options)
827
840
  else
828
- join_manager = options[:join_manager]
829
- records = records.where(Arel.sql(get_aliased_field(filter, join_manager)) => value)
841
+ join_manager = options.dig(:_relation_helper_options, :join_manager)
842
+ field = join_manager ? get_aliased_field(filter, join_manager) : filter
843
+ records = records.where(Arel.sql(field) => value)
830
844
  end
831
845
 
832
846
  records
@@ -1,5 +1,5 @@
1
1
  module JSONAPI
2
2
  module Resources
3
- VERSION = '0.10.0'
3
+ VERSION = '0.10.1'
4
4
  end
5
5
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: jsonapi-resources
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.10.0
4
+ version: 0.10.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Dan Gebhardt
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2019-09-30 00:00:00.000000000 Z
12
+ date: 2019-10-30 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: bundler
@@ -247,7 +247,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
247
247
  - !ruby/object:Gem::Version
248
248
  version: '0'
249
249
  requirements: []
250
- rubygems_version: 3.0.3
250
+ rubyforge_project:
251
+ rubygems_version: 2.7.6.2
251
252
  signing_key:
252
253
  specification_version: 4
253
254
  summary: Easily support JSON API in Rails.