ahoy_matey 4.0.0 → 4.0.1
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/CHANGELOG.md +7 -1
- data/lib/ahoy/query_methods.rb +21 -15
- data/lib/ahoy/version.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: cea71919e25f8f3b9ce9f3ccea43f8d11ec29d1995b3c5078428a8d4a7948457
|
4
|
+
data.tar.gz: 81316ad1b9fc956bf0ece8c23c63570d5f333e0f7c781406e1b2214e965feebb
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: c52e5f32c8fd7f9d070867e8d53868a58365430ed6d7bfa3baa1dd826f042875d42fadddc7991bf5c1c0b836021dd1b2634e8c2e43fa88a055dff9b8aeae70e5
|
7
|
+
data.tar.gz: e3cdb04028a3277f678f65bf713d3a93339be369d4ed8af73a87bddd549b2ffd7983abd91443858e4411459442b8e292612381ea3ff731ce53d8f0b50f995857
|
data/CHANGELOG.md
CHANGED
@@ -1,6 +1,12 @@
|
|
1
|
+
## 4.0.1 (2021-08-18)
|
2
|
+
|
3
|
+
- Added support for `where_event`, `where_props`, and `where_group` for SQLite
|
4
|
+
- Fixed results with `where_event`
|
5
|
+
- Fixed results with `where_props` and `where_group` when used with other scopes
|
6
|
+
|
1
7
|
## 4.0.0 (2021-08-14)
|
2
8
|
|
3
|
-
- Disabled geocoding by default
|
9
|
+
- Disabled geocoding by default (this was already the case for new installations with 3.2.0+)
|
4
10
|
- Made the `geocoder` gem an optional dependency
|
5
11
|
- Updated Ahoy.js to 0.4.0
|
6
12
|
- Updated API to return 400 status code when missing required parameters
|
data/lib/ahoy/query_methods.rb
CHANGED
@@ -8,7 +8,9 @@ module Ahoy
|
|
8
8
|
end
|
9
9
|
|
10
10
|
def where_props(properties)
|
11
|
-
|
11
|
+
return all if properties.empty?
|
12
|
+
|
13
|
+
relation = all
|
12
14
|
if respond_to?(:columns_hash)
|
13
15
|
column_type = columns_hash["properties"].type
|
14
16
|
adapter_name = connection.adapter_name.downcase
|
@@ -17,18 +19,9 @@ module Ahoy
|
|
17
19
|
end
|
18
20
|
case adapter_name
|
19
21
|
when "mongoid"
|
20
|
-
relation = where(
|
22
|
+
relation = where(properties.to_h { |k, v| ["properties.#{k}", v] })
|
21
23
|
when /mysql/
|
22
|
-
|
23
|
-
properties.each do |k, v|
|
24
|
-
if v.nil?
|
25
|
-
v = "null"
|
26
|
-
elsif v == true
|
27
|
-
v = "true"
|
28
|
-
end
|
29
|
-
|
30
|
-
relation = relation.where("JSON_UNQUOTE(JSON_EXTRACT(#{column}, ?)) = ?", "$.#{k}", v.as_json)
|
31
|
-
end
|
24
|
+
relation = relation.where("JSON_CONTAINS(properties, ?, '$') = 1", properties.to_json)
|
32
25
|
when /postgres|postgis/
|
33
26
|
case column_type
|
34
27
|
when :jsonb
|
@@ -45,6 +38,15 @@ module Ahoy
|
|
45
38
|
else
|
46
39
|
relation = relation.where("properties::jsonb @> ?", properties.to_json)
|
47
40
|
end
|
41
|
+
when /sqlite/
|
42
|
+
properties.each do |k, v|
|
43
|
+
relation =
|
44
|
+
if v.nil?
|
45
|
+
relation.where("JSON_EXTRACT(properties, ?) IS NULL", "$.#{k}")
|
46
|
+
else
|
47
|
+
relation.where("JSON_EXTRACT(properties, ?) = ?", "$.#{k}", v.as_json)
|
48
|
+
end
|
49
|
+
end
|
48
50
|
else
|
49
51
|
raise "Adapter not supported: #{adapter_name}"
|
50
52
|
end
|
@@ -56,7 +58,7 @@ module Ahoy
|
|
56
58
|
# like with group
|
57
59
|
props.flatten!
|
58
60
|
|
59
|
-
relation =
|
61
|
+
relation = all
|
60
62
|
if respond_to?(:columns_hash)
|
61
63
|
column_type = columns_hash["properties"].type
|
62
64
|
adapter_name = connection.adapter_name.downcase
|
@@ -67,10 +69,9 @@ module Ahoy
|
|
67
69
|
when "mongoid"
|
68
70
|
raise "Adapter not supported: #{adapter_name}"
|
69
71
|
when /mysql/
|
70
|
-
column = column_type == :json || connection.try(:mariadb?) ? "properties" : "CAST(properties AS JSON)"
|
71
72
|
props.each do |prop|
|
72
73
|
quoted_prop = connection.quote("$.#{prop}")
|
73
|
-
relation = relation.group("JSON_UNQUOTE(JSON_EXTRACT(
|
74
|
+
relation = relation.group("JSON_UNQUOTE(JSON_EXTRACT(properties, #{quoted_prop}))")
|
74
75
|
end
|
75
76
|
when /postgres|postgis/
|
76
77
|
# convert to jsonb to fix
|
@@ -82,6 +83,11 @@ module Ahoy
|
|
82
83
|
quoted_prop = connection.quote(prop)
|
83
84
|
relation = relation.group("properties#{cast} -> #{quoted_prop}")
|
84
85
|
end
|
86
|
+
when /sqlite/
|
87
|
+
props.each do |prop|
|
88
|
+
quoted_prop = connection.quote("$.#{prop}")
|
89
|
+
relation = relation.group("JSON_EXTRACT(properties, #{quoted_prop})")
|
90
|
+
end
|
85
91
|
else
|
86
92
|
raise "Adapter not supported: #{adapter_name}"
|
87
93
|
end
|
data/lib/ahoy/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: ahoy_matey
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 4.0.
|
4
|
+
version: 4.0.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Andrew Kane
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2021-08-
|
11
|
+
date: 2021-08-18 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: activesupport
|