grape-listing 1.1.9 → 1.1.11

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
  SHA256:
3
- metadata.gz: d4640c1fef7edd90ba2d131032ba1f8ee8d5edf276d8a703f114b7d944e0ef52
4
- data.tar.gz: c5cccf46f30fddf0fa7bf7b9f128e42fc6a6fe3291c941a302ea4c440e34e726
3
+ metadata.gz: 42151a397fe1355931f6dcd0c63fb939c3243946fd74d740917a7baade052cc3
4
+ data.tar.gz: a05d65e9c19e8e6a842b4e6de0d35beababfab88199542a1f1c91c0bc4fddf60
5
5
  SHA512:
6
- metadata.gz: 96658857f1c6b6f2eecc2b45417c2240dad18880ae87dd6e0d9522f468fcda24ab50bfc9cb20762166e664f0a1b2f78739122c8c5041783914a7ef4c9f8e7478
7
- data.tar.gz: 38681ed959270122c72573669b9ba6d92bf534adace4b99ee948e1f2e25580e9d9da6056229c3484a23a53f21c735c1d93414714c5c6ec42617be32cbec70c64
6
+ metadata.gz: 1aff012b41a15c19efe96e9256901cfd865184f7db29bf39b1e28bbac9aa3b9a631f636d1fb5c14820a3e6dd599422c4060b662bd63b977f092fd3a4d482af06
7
+ data.tar.gz: 1d958d8fdbfc3035f7518cb560262ff04a0dea151f42dd160af7c1c88dd1d029060c9711f73f16f16092b73bf189ad865b5e77d0f6a889bd5ab2f9b84d5e50af
data/README.md CHANGED
@@ -26,8 +26,7 @@ bundle
26
26
  ```ruby
27
27
  get 'users' do
28
28
  listing model: User,
29
- entity: UserEntity,
30
- search: %w[email name|ilike role|custom.for_role]
29
+ entity: UserEntity
31
30
  end
32
31
 
33
32
  ```
@@ -52,7 +51,24 @@ end
52
51
 
53
52
  ### Поиск
54
53
 
55
- Для поиска по полям необходимо передать их в запросе в виде `?field=value`. Для поиска по нескольким полям, параметры должны быть перечислены через `&`, например: `?field_1=value&field_2=value`.
54
+ Для возможности поиска необходимо передать названия полей, по которым может осуществляться поиск, в виде массива в опции `search`.
55
+
56
+ Для осуществления фильтрации необходимо передать параметры в запросе в виде `?field=value`. Для поиска по нескольким полям, параметры должны быть перечислены через `&`, например: `?field_1=value&field_2=value`.
57
+
58
+ В общем случае, названия полей соответствуют названиями параметров (например поле `name` и параметр `name`).
59
+
60
+ Пример использования с осуществлением поиска по полю `name` с полным совпадением:
61
+
62
+ ```ruby
63
+ get 'users' do
64
+ listing model: User,
65
+ entity: UserEntity,
66
+ search: %w[name]
67
+ end
68
+ ```
69
+ ```
70
+ GET http://localhost:3000/api/users?name=Ivan
71
+ ```
56
72
 
57
73
  ### Сортировка
58
74
 
data/lib/grape/dsl.rb CHANGED
@@ -1,3 +1,5 @@
1
+ require 'addressable/uri'
2
+
1
3
  module Grape
2
4
  module DSL
3
5
  module InsideRoute
@@ -69,6 +69,13 @@ module GrapeListing
69
69
  end
70
70
 
71
71
  def count_cache_key
72
+ # необходимо убрать параметры offset и page из uri
73
+ uri_path, params = @request_uri.split('?')
74
+ if params
75
+ params = Rack::Utils.parse_query(params).except('offset', 'page')
76
+ @request_uri = params.present? ? "#{uri_path}?#{Rack::Utils.build_query(params)}" : uri_path
77
+ end
78
+
72
79
  # пример: "GET api/v1/users?active=true"
73
80
  body = "#{@request_method} #{@request_uri}"
74
81
 
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: grape-listing
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.1.9
4
+ version: 1.1.11
5
5
  platform: ruby
6
6
  authors:
7
7
  - Павел Бабин
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2024-06-27 00:00:00.000000000 Z
11
+ date: 2024-07-02 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: actionpack