effective_resources 2.33.0 → 2.34.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: 6f5a25c6d8a3d00de7fc80b70dacf4558f2c0dc8241294ce276f6d31eda10a21
4
- data.tar.gz: a7edbeb23f0ae8a5f772227c25fd8febe75d8b277440c3f10b4de42575c85a61
3
+ metadata.gz: a60b02f68659a941b3671d2d4315ea3bf0dcd5c868beed6dc6bf764ed01a2e0c
4
+ data.tar.gz: 17b12f3276ae89de4967dd10318ee3e4bfd6f2b10e1431d0180c23ad6c1bda2d
5
5
  SHA512:
6
- metadata.gz: 7f44f4d9b43f1cfd93d567d3ed1ea12f68696acb2dbb328a07fa811eef0de797259912f936de1d016b333179baac47c22ec4773be3667245ea0b1bb0516bb3d9
7
- data.tar.gz: 56d5924d9b63fb7b51be6b47eeb178a8ab6bb7eae501083b1e6077bb2145867750351a5233d6ff01e9ecbd8ebbcd9a80afb196aac0769d0c9e145960d3de659b
6
+ metadata.gz: eceef728e4c2fc86434f46da1c4b5d5f5502c91c804c2ecf09341552da771976e5a861fe7e3046dd461f752fabbf7f798958eeeb0adfd4fe812373c00a728dc0
7
+ data.tar.gz: '07391feec22d26e5bdafddfa272c35ce8e2531323dd84aada5cc50d3fab28b8b4ff81f01f1bd41604e6c5438f074ed3452e2a1fa251c7faf3f186919af8e688d'
@@ -22,9 +22,21 @@ module Effective
22
22
  # name: sort by this column, or this relation
23
23
  # sort: when a symbol or boolean, this is the relation's column to sort by
24
24
 
25
- def order(name, direction = :asc, as: nil, sort: nil, sql_column: nil, limit: nil, reorder: false)
25
+ # There is a sort by array (ids) syntax:
26
+ # This will sort the base collection.id array by the given direction
27
+ #
28
+ # Effective::Resource.new(collection).order(direction) do
29
+ # collection.sort { |a, b| a.membership&.category.to_s <=> b.membership&.category.to_s }
30
+ # end
31
+
32
+ def order(name = nil, direction = :asc, as: nil, sort: nil, sql_column: nil, limit: nil, reorder: false, &block)
26
33
  raise 'expected relation to be present' unless relation
27
34
 
35
+ if block_given? && (name == :asc || name == :desc)
36
+ direction = name
37
+ name = :id
38
+ end
39
+
28
40
  sql_column ||= sql_column(name)
29
41
  sql_type = (as || sql_type(name))
30
42
 
@@ -32,6 +44,11 @@ module Effective
32
44
  sql_direction = sql_direction(direction)
33
45
  @relation = relation.reorder(nil) if reorder
34
46
 
47
+ if block_given?
48
+ ids = block.call().map { |resource| resource.try(:id) || resource }
49
+ return relation.order(order_by_array_position((direction == :asc) ? ids : ids.reverse, sql_column))
50
+ end
51
+
35
52
  case sql_type
36
53
  when :belongs_to
37
54
  relation
@@ -1,3 +1,3 @@
1
1
  module EffectiveResources
2
- VERSION = '2.33.0'.freeze
2
+ VERSION = '2.34.1'.freeze
3
3
  end
@@ -120,6 +120,8 @@ module EffectiveResources
120
120
  end
121
121
 
122
122
  def self.truthy?(value)
123
+ return true if (value == true || value == 'true')
124
+
123
125
  return true if value.kind_of?(String) && ['yes', 'true'].include?(value.downcase)
124
126
  return false if value.kind_of?(String) && ['no', 'false'].include?(value.downcase)
125
127
 
@@ -131,6 +133,7 @@ module EffectiveResources
131
133
  end
132
134
 
133
135
  def self.falsey?(value)
136
+ return true if (value == false || value == 'false')
134
137
  !truthy?(value)
135
138
  end
136
139
 
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: effective_resources
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.33.0
4
+ version: 2.34.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Code and Effect
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2025-11-07 00:00:00.000000000 Z
11
+ date: 2025-12-18 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rails