upfluence-utils 0.5.3 → 0.5.4

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
  SHA1:
3
- metadata.gz: 96b4ca9a69d062c47d1338e7abed5ecc8077cb39
4
- data.tar.gz: 2fb9fb60bfb19b53fb9204e36dc2cf46adf64aa9
3
+ metadata.gz: b42ff65b79072c564698ec7f15c5cc694c1a4be2
4
+ data.tar.gz: bb62cd9764342fa00af912495619ead34146f1af
5
5
  SHA512:
6
- metadata.gz: 777f3f18e6305964baebe31806b43e397b381eceea0ec98fb4397466dd5b1a928a70b7a4424a7670bbdab50cc8180557105a278ac942bf0bd5b8010e2251df93
7
- data.tar.gz: c46b9b7d281e884b719bad94d214247393512b8698c4366e1147739d049ff7b30136328423ed42460cd0182a213908da768f262d19eda72a315921e937ad84a4
6
+ metadata.gz: 93c6a64b85019e0580d087e73cbd1652d6de4a57f0e8d79726081a46565543a060dff9fac09014d30e6346e42e1275ebb46da5fa4f56d7ef022c5165284c2a88
7
+ data.tar.gz: 6446cd0f0ba8fd2bac641f805f57d8f8432614766ed2ee2f46bbde04dde5dd3647c89e1607d5a16619b40621f25677e4493d5808cba1424f015dcc264fcf0a6c
@@ -0,0 +1,49 @@
1
+ module Upfluence
2
+ module Mixin
3
+ module Pagination
4
+ DEFAULT_PAGE = 1
5
+ DEFAULT_PER_PAGE = 12
6
+
7
+ def paginated_model
8
+ raise NotImplementedError
9
+ end
10
+
11
+ def paginated_entities
12
+ @paginated_entities ||= paginated_model.limit(per_page).offset(
13
+ (page - 1) * per_page
14
+ ).to_a
15
+ end
16
+
17
+ def paginated_entities=(v)
18
+ @paginated_entities = v
19
+ end
20
+
21
+ def paginated_total
22
+ paginated_model.count
23
+ end
24
+
25
+ def page
26
+ [params[:page].to_i, DEFAULT_PAGE].max
27
+ end
28
+
29
+ def per_page
30
+ [
31
+ params[:per_page].to_i,
32
+ methods.include?(:default_per_page) ? default_per_page : DEFAULT_PER_PAGE
33
+ ].max
34
+ end
35
+
36
+ def respond_with_pagination(args = {})
37
+ respond_with(
38
+ args[:payload] || paginated_entities,
39
+ args.merge(
40
+ meta: {
41
+ total: paginated_total,
42
+ total_pages: (paginated_total.to_f / per_page.to_f).ceil
43
+ }
44
+ ) { |_, x, y| x.merge(y) }
45
+ )
46
+ end
47
+ end
48
+ end
49
+ end
@@ -1,5 +1,5 @@
1
1
  module Upfluence
2
2
  module Utils
3
- VERSION = '0.5.3'.freeze
3
+ VERSION = '0.5.4'.freeze
4
4
  end
5
5
  end
data/lib/upfluence.rb CHANGED
@@ -1,4 +1,5 @@
1
1
  require 'upfluence/utils'
2
2
  require 'upfluence/endpoint/api_endpoint'
3
3
  require 'upfluence/mixin/strong_parameters'
4
+ require 'upfluence/mixin/pagination'
4
5
  require 'upfluence/base/exceptions/validation_error'
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: upfluence-utils
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.5.3
4
+ version: 0.5.4
5
5
  platform: ruby
6
6
  authors:
7
7
  - Upfluence
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2018-05-07 00:00:00.000000000 Z
11
+ date: 2018-05-17 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -259,6 +259,7 @@ files:
259
259
  - lib/upfluence/http/middleware/prometheus.rb
260
260
  - lib/upfluence/http/server.rb
261
261
  - lib/upfluence/logger.rb
262
+ - lib/upfluence/mixin/pagination.rb
262
263
  - lib/upfluence/mixin/strong_parameters.rb
263
264
  - lib/upfluence/pool.rb
264
265
  - lib/upfluence/utils.rb