abstract_finder 0.0.1 → 0.0.2

Sign up to get free protection for your applications and to get access to all the features.
Files changed (4) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +28 -0
  3. data/lib/abstract_finder.rb +1 -1
  4. metadata +3 -3
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 77a7e235ebd8fd73ee68168acc1a73d22209d32b7279d1b1b2301f60ad95bdcf
4
- data.tar.gz: effe24917541a0e2f74ef5f8ba5f3033796e4fda372ca7def0508e5851e4035f
3
+ metadata.gz: c2cd512d02c9a41dc385d4ff126bcdce014ebbe4f0c1b130849f3d682b83ad9c
4
+ data.tar.gz: f95a7ebdcb012e83b0883da86542a5852210c705397da6febae389711666294c
5
5
  SHA512:
6
- metadata.gz: c0f2e8cf4e7a50bf30abfc088d8c8f748451db1722ab62a3c15fa32c02a430e2b61282d5f24ebdbd0f16cc8f8e49b2807a2191f10b12c66cf7085e93c6bbfb8c
7
- data.tar.gz: 0b765daf8f62b5364ace03cfac75dd4554388cfb29bf31365a65c7593103da718b2a0e042a0d6d6ada3346d19c227a39e1e1a7292bdc02e837c2577f430a4d82
6
+ metadata.gz: 44b11a1234976fdfc7860118950380fa6221b23b908d0dc3c3fd4155db743e9147038045a9e1ed8fb95cf2242753068ae955a0a2f066349c754213fd844d4d6e
7
+ data.tar.gz: fbc1a578b810be1fd9d512c725a8749ed7796789b7e9408f5c5d47d994bd5a1c2d53977c30d2f2eda5990ad0b0290991eda75878aac13f9e4742cef187e8502d
data/README.md CHANGED
@@ -0,0 +1,28 @@
1
+ ## AbstractFinder
2
+
3
+ ### API wrapper for search, pagination, filter.
4
+
5
+ General idea to pass query, relations to avoid N+1 and permitted params to paginate, filter and sort AbstractFinder collection.
6
+
7
+
8
+ ``` ruby
9
+ class RecordsContrroller < Api::BaseController
10
+ def index
11
+ finder = AbstractFinder.call(
12
+ Record.latest, # scope, method or class
13
+ %w[rating status],
14
+ params
15
+ )
16
+
17
+ render json: RecordSerializer.new(
18
+ finder.collection,
19
+ { meta: finder.meta, params: permitted_params }
20
+ ).serializable_hash
21
+
22
+ private
23
+
24
+ def params
25
+ params.require(:record).permit(:page, :per_page, :search_by, :q, :order_by)
26
+ end
27
+ end
28
+ ```
@@ -43,7 +43,7 @@ class AbstractFinder < BaseFinder
43
43
 
44
44
  # define #search_by method in query model and use this finder
45
45
  def query
46
- @collection = model.includes(associations).search_by(@filters[:q]) if model.respond_to? :search_by
46
+ @collection = @collection.includes(associations).search_by(@filters[:q]) if @collection.respond_to? :search_by
47
47
  end
48
48
 
49
49
  def filter; end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: abstract_finder
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.1
4
+ version: 0.0.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Aleksei Ivanov
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2021-10-08 00:00:00.000000000 Z
11
+ date: 2022-01-05 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: kaminari
@@ -53,7 +53,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
53
53
  - !ruby/object:Gem::Version
54
54
  version: '0'
55
55
  requirements: []
56
- rubygems_version: 3.1.2
56
+ rubygems_version: 3.3.3
57
57
  signing_key:
58
58
  specification_version: 4
59
59
  summary: Abstract finder for rails api with gueries, sort, filter and pagination