grape-listing 2.0.0.pre.beta.4 → 2.0.0.pre.beta.6
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/lib/grape_listing/version.rb +1 -1
- data/lib/listing_service/search.rb +31 -0
- data/lib/listing_service/sorting.rb +1 -1
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 89493646689c48db0dd475f3b6a636f6486e79fa1db434c8ae8e0be66dc1f398
|
4
|
+
data.tar.gz: f169ecbe681e88a9383f44ebe1563e7001fa248596ab879664a574c8d55afd46
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 25944b29420f5317fe8d24c300bdbe47594bcc3d637e149a760c4835f4eecc29420548a7ce580b51c868d230cc0a4bc51c96da298fc6244d13289b585f257398
|
7
|
+
data.tar.gz: 3942a2042bb8c5ae1529a3a5b27c99afa84333463554cf91cdcbb4dd651048f37c907635aa3f2377378b9295ce2f4a2148a8bacb0776e93f254996b52058fa35
|
@@ -49,6 +49,8 @@ module GrapeListing
|
|
49
49
|
date_clause(subject, condition, operator, value)
|
50
50
|
when :boolean
|
51
51
|
boolean_clause(subject, condition, operator, value)
|
52
|
+
when :enum
|
53
|
+
enum_clause(subject, condition, operator, value)
|
52
54
|
end
|
53
55
|
|
54
56
|
# применение запроса для фильтрации
|
@@ -120,6 +122,15 @@ module GrapeListing
|
|
120
122
|
end
|
121
123
|
end
|
122
124
|
|
125
|
+
def enum_clause(subject, condition, operator, value)
|
126
|
+
case operator
|
127
|
+
when EQUAL
|
128
|
+
enum_equal(subject, condition, value)
|
129
|
+
when IN
|
130
|
+
enum_in(subject, condition, value)
|
131
|
+
end
|
132
|
+
end
|
133
|
+
|
123
134
|
def string_present(subject, condition)
|
124
135
|
case condition
|
125
136
|
when IS
|
@@ -312,5 +323,25 @@ module GrapeListing
|
|
312
323
|
end
|
313
324
|
end
|
314
325
|
|
326
|
+
def enum_equal(subject, condition, value)
|
327
|
+
case condition
|
328
|
+
when IS
|
329
|
+
"#{subject} = '#{value}'"
|
330
|
+
when NOT
|
331
|
+
"#{subject} != '#{value}'"
|
332
|
+
end
|
333
|
+
end
|
334
|
+
|
335
|
+
def enum_in(subject, condition, value)
|
336
|
+
opts = value.map { |i| "'#{i}'" }.join(',')
|
337
|
+
|
338
|
+
case condition
|
339
|
+
when IS
|
340
|
+
"#{subject} IN (#{opts})"
|
341
|
+
when NOT
|
342
|
+
"#{subject} NOT IN (#{opts})"
|
343
|
+
end
|
344
|
+
end
|
345
|
+
|
315
346
|
end
|
316
347
|
end
|
@@ -12,7 +12,7 @@ module GrapeListing
|
|
12
12
|
proc { send(custom_scope, @sort_order) }
|
13
13
|
else
|
14
14
|
nulls_order = @sort_order.to_s.downcase == 'desc' ? 'LAST' : 'FIRST'
|
15
|
-
query = Arel.sql("#{@sort_by} #{@sort_order} NULLS #{nulls_order}")
|
15
|
+
query = Arel.sql("#{@model.table_name}.#{@sort_by} #{@sort_order} NULLS #{nulls_order}")
|
16
16
|
proc { order(query) }
|
17
17
|
end
|
18
18
|
end
|
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: 2.0.0.pre.beta.
|
4
|
+
version: 2.0.0.pre.beta.6
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Павел Бабин
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2025-06-
|
11
|
+
date: 2025-06-05 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: actionpack
|