abstract_finder 0.0.1 → 0.0.2

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