apill 2.5.1 → 2.6.0beta1

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
  SHA1:
3
- metadata.gz: c03153c35e87292c35f133777c0492f2b86ebf9b
4
- data.tar.gz: 5bbc4f7f5c3caf1447c234800e43a254d0482d0d
3
+ metadata.gz: 5b054b264c62b3c4ade3df6880625c877020fe94
4
+ data.tar.gz: 985023f87cda7520b5e2a7e26df300aafd591435
5
5
  SHA512:
6
- metadata.gz: e56f619e93a60c29d1d2285d50180467639afcd060a2d6f3c0043dab84f5ef3f67566e2ae3c3a4d9d2b57e75c0734be9afa15bd36e157cf694aec9029ef2dbb6
7
- data.tar.gz: edf7e859755576f2dfce4267ab7cf340371e8bcace92e45d2bd8432d48d5ee3e402450ba897ad54cc9f2babcbb8f40836c48e9943823bdf55daa8857db6c42cf
6
+ metadata.gz: 0298002703ca82908c8d4281e09c257562109163388ff05e274e2f3aa6bb24d188c1548825554fe7ecb6737b6a0c2256b79eae1c781361a0cc356e4fdb03550e
7
+ data.tar.gz: 2d1d6d6eb61e322298f85e619f5479c2a2dc52525bcbda0bca62be17e1b9509b54c3541f0b304f206851859d53e8a10cd35f54b78a5560449afddc2ffc6caad6
@@ -0,0 +1,49 @@
1
+ module Apill
2
+ module Mixins
3
+ module Indexable
4
+ module ClassMethods
5
+ def index(model)
6
+ define_method(:indexed_model_name) do
7
+ model
8
+ end
9
+ end
10
+ end
11
+
12
+ def self.included(base)
13
+ base.extend ClassMethods
14
+ end
15
+
16
+ private
17
+
18
+ def index_params
19
+ @index_params ||= params[:index_params] || params || {}
20
+ end
21
+
22
+ def filtered_resource
23
+ @filtered_resource ||= begin
24
+ resource = if defined? super
25
+ super
26
+ else
27
+ send(indexed_model_name)
28
+ end
29
+
30
+ if index_params.key? 'q'
31
+ resource.search(index_params['q'])
32
+ else
33
+ resource
34
+ end
35
+ end
36
+ end
37
+
38
+ def filter_data
39
+ filter_data = defined?(super) ? super : {}
40
+
41
+ filter_data.merge(indexing_data)
42
+ end
43
+
44
+ def indexing_data
45
+ {}
46
+ end
47
+ end
48
+ end
49
+ end
@@ -26,9 +26,9 @@ module Pageable
26
26
  send(paginated_model_name)
27
27
  end
28
28
 
29
- resource.
30
- page(page_number).
31
- per(items_per_page)
29
+ @paginated_resource = resource.
30
+ page(page_number).
31
+ per(items_per_page)
32
32
  end
33
33
  end
34
34
 
@@ -40,10 +40,10 @@ module Pageable
40
40
 
41
41
  def pagination_data
42
42
  {
43
- total_pages: filtered_resource.total_pages,
44
- current_page: filtered_resource.current_page,
45
- previous_page: filtered_resource.prev_page,
46
- next_page: filtered_resource.next_page,
43
+ total_pages: @paginated_resource.total_pages,
44
+ current_page: @paginated_resource.current_page,
45
+ previous_page: @paginated_resource.prev_page,
46
+ next_page: @paginated_resource.next_page,
47
47
  }
48
48
  end
49
49
  end
@@ -38,6 +38,7 @@ module Queryable
38
38
  end
39
39
  end
40
40
 
41
+ # rubocop:disable Metrics/PerceivedComplexity
41
42
  def filtered_resource
42
43
  @filtered_resource ||= begin
43
44
  resource = if defined? super
@@ -45,8 +46,13 @@ module Queryable
45
46
  else
46
47
  send(queryed_model_name)
47
48
  end
49
+ resource = if resource.respond_to? :records
50
+ resource.records
51
+ else
52
+ resource
53
+ end
48
54
  resource_class = if resource.respond_to? :klass
49
- resource.klass
55
+ resource.klass.name.constantize
50
56
  else
51
57
  resource
52
58
  end
@@ -63,6 +69,7 @@ module Queryable
63
69
  end
64
70
  end
65
71
  end
72
+ # rubocop:enable Metrics/PerceivedComplexity
66
73
 
67
74
  def filter_data
68
75
  filter_data = defined?(super) ? super : {}
@@ -26,7 +26,6 @@ module Sortable
26
26
  else
27
27
  send(sorted_model_name)
28
28
  end
29
-
30
29
  resource.
31
30
  order(sorting_arguments)
32
31
  end
data/lib/apill/version.rb CHANGED
@@ -1,3 +1,3 @@
1
1
  module Apill
2
- VERSION = '2.5.1'
2
+ VERSION = '2.6.0beta1'
3
3
  end
data/lib/apill.rb CHANGED
@@ -6,6 +6,7 @@ require 'apill/configuration'
6
6
  require 'apill/matchers/accept_header_matcher'
7
7
  require 'apill/matchers/subdomain_matcher'
8
8
  require 'apill/matchers/version_matcher'
9
+ require 'apill/mixins/indexable'
9
10
  require 'apill/mixins/sortable'
10
11
  require 'apill/mixins/queryable'
11
12
  require 'apill/mixins/pageable'
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: apill
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.5.1
4
+ version: 2.6.0beta1
5
5
  platform: ruby
6
6
  authors:
7
7
  - jfelchner
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-03-26 00:00:00.000000000 Z
11
+ date: 2015-04-11 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: human_error
@@ -16,14 +16,14 @@ dependencies:
16
16
  requirements:
17
17
  - - "~>"
18
18
  - !ruby/object:Gem::Version
19
- version: '1.13'
19
+ version: 2.0beta
20
20
  type: :runtime
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
24
  - - "~>"
25
25
  - !ruby/object:Gem::Version
26
- version: '1.13'
26
+ version: 2.0beta
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: kaminari
29
29
  requirement: !ruby/object:Gem::Requirement
@@ -85,6 +85,7 @@ files:
85
85
  - lib/apill/matchers/subdomain_matcher.rb
86
86
  - lib/apill/matchers/version_matcher.rb
87
87
  - lib/apill/middleware/api_request.rb
88
+ - lib/apill/mixins/indexable.rb
88
89
  - lib/apill/mixins/pageable.rb
89
90
  - lib/apill/mixins/queryable.rb
90
91
  - lib/apill/mixins/sortable.rb
@@ -119,9 +120,9 @@ required_ruby_version: !ruby/object:Gem::Requirement
119
120
  version: '0'
120
121
  required_rubygems_version: !ruby/object:Gem::Requirement
121
122
  requirements:
122
- - - ">="
123
+ - - ">"
123
124
  - !ruby/object:Gem::Version
124
- version: '0'
125
+ version: 1.3.1
125
126
  requirements: []
126
127
  rubyforge_project:
127
128
  rubygems_version: 2.4.6