active_postgrest 0.2.1 → 0.2.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
- checksums.yaml.gz.sig +0 -0
- data/lib/active_postgrest/client.rb +9 -0
- data/lib/active_postgrest/relation.rb +56 -9
- data/lib/active_postgrest/version.rb +1 -1
- data.tar.gz.sig +0 -0
- metadata +2 -2
- metadata.gz.sig +0 -0
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 276de717bb5ff48a395f63a5c778194ba660cfda61c13eaed97e71043673ba35
|
|
4
|
+
data.tar.gz: 83274d331de650e3a54a706c9aaeac953e45cba044a83d3f57c8509999159b8a
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: ad008e75b0d00d2b25dd4a095b28ea0c4de88893b223c7b69a239650464f797f4216e7ac2917be62ef1a0947627bcd35247f5dfd3dde7a44d0b920f11d6b1357
|
|
7
|
+
data.tar.gz: e0969cdb78a04b2e8ca0d8f8038681cd5c480ee85d0ec2c0ff63de28fa3b65c21bf9fc1fbb6edb51f5d361c4ac57fc220328f78e7f8ca797d6e21ea2eb70d159
|
checksums.yaml.gz.sig
CHANGED
|
Binary file
|
|
@@ -34,6 +34,15 @@ module ActivePostgrest
|
|
|
34
34
|
end.body
|
|
35
35
|
end
|
|
36
36
|
|
|
37
|
+
def head(resource, params = {}, schema: nil)
|
|
38
|
+
response = @conn.head(resource, params) do |req|
|
|
39
|
+
auth_headers(req)
|
|
40
|
+
req.headers['Accept-Profile'] = schema if schema
|
|
41
|
+
end
|
|
42
|
+
raise_on_error!(response)
|
|
43
|
+
response
|
|
44
|
+
end
|
|
45
|
+
|
|
37
46
|
def get(resource, params = {}, count: :exact, schema: nil)
|
|
38
47
|
response = @conn.get(resource, params) do |req|
|
|
39
48
|
auth_headers(req)
|
|
@@ -155,16 +155,44 @@ module ActivePostgrest
|
|
|
155
155
|
total.to_i
|
|
156
156
|
end
|
|
157
157
|
|
|
158
|
-
def any?(&block)
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
158
|
+
def any?(&block)
|
|
159
|
+
if block
|
|
160
|
+
super
|
|
161
|
+
else
|
|
162
|
+
(@null ? false : head_has_rows?)
|
|
163
|
+
end
|
|
164
|
+
end
|
|
165
|
+
|
|
166
|
+
def none?(&block)
|
|
167
|
+
if block
|
|
168
|
+
super
|
|
169
|
+
else
|
|
170
|
+
(@null ? true : !head_has_rows?)
|
|
171
|
+
end
|
|
172
|
+
end
|
|
163
173
|
|
|
164
|
-
def
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
174
|
+
def one?(&block)
|
|
175
|
+
if block
|
|
176
|
+
super
|
|
177
|
+
else
|
|
178
|
+
(@null ? false : head_count_up_to(2) == 1)
|
|
179
|
+
end
|
|
180
|
+
end
|
|
181
|
+
|
|
182
|
+
def many?(&block)
|
|
183
|
+
if block
|
|
184
|
+
to_a.count(&block) > 1
|
|
185
|
+
else
|
|
186
|
+
(@null ? false : head_count_up_to(2) > 1)
|
|
187
|
+
end
|
|
188
|
+
end
|
|
189
|
+
|
|
190
|
+
def exists? = any?
|
|
191
|
+
|
|
192
|
+
def average(col) = coerce_numeric(aggregate_value("#{col}.avg()", 'avg'))
|
|
193
|
+
def sum(col) = coerce_numeric(aggregate_value("#{col}.sum()", 'sum'))
|
|
194
|
+
def minimum(col) = coerce_numeric(aggregate_value("#{col}.min()", 'min'))
|
|
195
|
+
def maximum(col) = coerce_numeric(aggregate_value("#{col}.max()", 'max'))
|
|
168
196
|
|
|
169
197
|
def pluck(*cols)
|
|
170
198
|
return [] if @null
|
|
@@ -277,6 +305,25 @@ module ActivePostgrest
|
|
|
277
305
|
end
|
|
278
306
|
end
|
|
279
307
|
|
|
308
|
+
def head_count_up_to(limit)
|
|
309
|
+
range = @client.head(@table, build_params.merge(limit: limit), schema: @schema)
|
|
310
|
+
.headers['content-range']
|
|
311
|
+
raise CountNotAvailable, 'Content-Range header missing from HEAD response' if range.nil?
|
|
312
|
+
return 0 if range.start_with?('*')
|
|
313
|
+
|
|
314
|
+
range[/\A\d+-(\d+)/, 1].to_i + 1
|
|
315
|
+
end
|
|
316
|
+
|
|
317
|
+
def head_has_rows? = head_count_up_to(1).positive?
|
|
318
|
+
|
|
319
|
+
def coerce_numeric(value)
|
|
320
|
+
return value unless value.is_a?(String)
|
|
321
|
+
|
|
322
|
+
value.match?(/\A-?\d+\z/) ? Integer(value) : BigDecimal(value)
|
|
323
|
+
rescue ArgumentError
|
|
324
|
+
value
|
|
325
|
+
end
|
|
326
|
+
|
|
280
327
|
def aggregate_value(expr, key)
|
|
281
328
|
return nil if @null
|
|
282
329
|
|
data.tar.gz.sig
CHANGED
|
Binary file
|
metadata
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: active_postgrest
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 0.2.
|
|
4
|
+
version: 0.2.2
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Evgeny Sokolov
|
|
@@ -35,7 +35,7 @@ cert_chain:
|
|
|
35
35
|
tC9NYXuv1LyPD+PZZRO4LDDSjUVx+RF/dJIE23hzgbLexpyriCMFyKGhHi2KApEl
|
|
36
36
|
eIQUsjZL
|
|
37
37
|
-----END CERTIFICATE-----
|
|
38
|
-
date: 2026-06-
|
|
38
|
+
date: 2026-06-19 00:00:00.000000000 Z
|
|
39
39
|
dependencies:
|
|
40
40
|
- !ruby/object:Gem::Dependency
|
|
41
41
|
name: faraday
|
metadata.gz.sig
CHANGED
|
Binary file
|