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.
- checksums.yaml +4 -4
- data/README.md +28 -0
- data/lib/abstract_finder.rb +1 -1
- metadata +3 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: c2cd512d02c9a41dc385d4ff126bcdce014ebbe4f0c1b130849f3d682b83ad9c
|
4
|
+
data.tar.gz: f95a7ebdcb012e83b0883da86542a5852210c705397da6febae389711666294c
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
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
|
+
```
|
data/lib/abstract_finder.rb
CHANGED
@@ -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 =
|
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.
|
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:
|
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.
|
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
|