apill 2.5.1 → 2.6.0beta1

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: 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