effective_resources 2.41.0 → 2.42.0

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: 4184ca5c72af38ffa3aa7ddcaa87c989b2a545960dc5bf2f5e243aa288ea2da0
4
- data.tar.gz: d8f7e086a99114189c32d295737bfc6d0f5f53088b45ffcd507c410efce2fe15
3
+ metadata.gz: c322710a6dffa4c2e384fd31e06b0226826e3bc364277abdaac8a71e6d9adfc6
4
+ data.tar.gz: cbf12a724542c9148a8ce95a0dadf5f9e86748af998faded9f912839dba43a5f
5
5
  SHA512:
6
- metadata.gz: f2c71a1a6aef72429c246f40988dba46db246292c20e08c2fdb6990d159e9b33e05ef2066dc4834509fdf0fd9e6e413f01a5b0042e90a3062d86bfaa7dcda4f9
7
- data.tar.gz: ec22e366b5277b5e5a13bcde93b781b19a6b10e6482ebbd4126bb3657b32644dc3aef004aded68c04af363b570e7641f5907bf3865e3e1ca548a0f8a606fba30
6
+ metadata.gz: 7f601bd8c2e4efb5d74e92f701a3b5288b83ed5e38924cb8ef548c868f9c1ec19edec48adea1c8ce78cf6b9e9551a0eab958bf804f0781477e2fd1b887e3c128
7
+ data.tar.gz: 5e84dc97c1ced2733f1981e5a8a23c9e142d217d1b604d08ff3624483e6df8368c302d2f17a43e67af178a59f1241476c3ce8f4fbad1b3ec890246aa07c119cb
@@ -33,7 +33,7 @@ module Effective
33
33
  # Paginate
34
34
  if !skip_paginate
35
35
  per_page = 50
36
- page = (params[:page] || 1).to_i
36
+ page = EffectiveResources.normalize_page(params[:page]) || 1
37
37
  last = (collection.reselect(:id).count.to_f / per_page).ceil
38
38
  more = page < last
39
39
 
@@ -27,7 +27,7 @@ module ActsAsPaginable
27
27
 
28
28
  scope :paginate, -> (page: nil, per_page: nil) {
29
29
  per_page = (per_page || default_per_page).to_i
30
- page = (page || 1).to_i
30
+ page = EffectiveResources.normalize_page(page) || 1
31
31
  offset = [(page - 1), 0].max * (per_page).to_i
32
32
 
33
33
  all.limit(per_page).offset(offset)
@@ -1,3 +1,3 @@
1
1
  module EffectiveResources
2
- VERSION = '2.41.0'.freeze
2
+ VERSION = '2.42.0'.freeze
3
3
  end
@@ -87,6 +87,22 @@ module EffectiveResources
87
87
 
88
88
  # Utilities
89
89
 
90
+ def self.normalize_page(value)
91
+ return 1 if value.nil? || value == ''
92
+ return value if value.is_a?(Integer) && value.positive?
93
+ return value.to_i if value.is_a?(String) && value.match?(/\A[1-9]\d*\z/)
94
+ end
95
+
96
+ def self.validate_page!(value, collection_count:, per_page:)
97
+ page = normalize_page(value)
98
+ raise ActiveRecord::RecordNotFound, "Page #{value.inspect} is invalid" unless page
99
+
100
+ last = [(collection_count.to_f / per_page).ceil, 1].max
101
+ raise ActiveRecord::RecordNotFound, "Page #{page} does not exist" if page > last
102
+
103
+ page
104
+ end
105
+
90
106
  # This looks up the best class give the name
91
107
  # If the Tenant is present, use those classes first.
92
108
  def self.best(name)
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: effective_resources
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.41.0
4
+ version: 2.42.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Code and Effect