arel-extensions 6.0.0.6 → 6.0.0.8
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/.gitignore +1 -0
- data/.travis.yml +5 -5
- data/arel-extensions.gemspec +1 -1
- data/lib/arel/nodes/relation.rb +5 -1
- data/lib/arel/ts_predications.rb +3 -3
- data/lib/arel/visitors/sunstone_extensions.rb +22 -10
- data/test/sunstone_test.rb +48 -0
- data/test/test_helper.rb +5 -1
- metadata +7 -8
- data/Gemfile.lock +0 -73
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 87c1e3d344cef64601be578c9efa5e05ca8a0fb2a0443cb81f586c06a3e1009f
|
4
|
+
data.tar.gz: 361a92b9257df496481556ccb63f78e399168dc021a5461f5a3b5b4e324a401e
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 4e83c72da829bf31e4113d777f4cede440c1ecb8d3ad7c552225978788956af72030c669b782aa935cc4945990bb02449c224e582643ed8e88694d4b439a1995
|
7
|
+
data.tar.gz: ade28f1b9fad88a81eeeb0d25a7a3608900c802858f0579a9f0713dd68a655433ce2c2f4504939c83600db20e77e4a28995feb2bd0db2573772c4ba762f00372
|
data/.gitignore
CHANGED
data/.travis.yml
CHANGED
@@ -8,14 +8,13 @@ cache:
|
|
8
8
|
- /home/travis/.rvm/gems
|
9
9
|
|
10
10
|
rvm:
|
11
|
-
- 2.5
|
12
11
|
- 2.6
|
13
12
|
|
14
13
|
env:
|
15
14
|
matrix:
|
16
|
-
- RAILS_VERSION=v6.0.
|
17
|
-
- RAILS_VERSION=v6.0.
|
18
|
-
- RAILS_VERSION=v6.0.
|
15
|
+
- RAILS_VERSION=v6.0.3.1 GEM=activerecord:mysql2
|
16
|
+
- RAILS_VERSION=v6.0.3.1 GEM=activerecord:sqlite3
|
17
|
+
- RAILS_VERSION=v6.0.3.1 GEM=activerecord:postgresql
|
19
18
|
|
20
19
|
services:
|
21
20
|
- mysql
|
@@ -26,6 +25,7 @@ before_install:
|
|
26
25
|
- unset BUNDLE_GEMFILE
|
27
26
|
- gem update --system
|
28
27
|
- gem update bundler
|
28
|
+
- gem install bundler -v 1.17.3
|
29
29
|
|
30
30
|
install:
|
31
31
|
- git clone https://github.com/rails/rails.git ~/build/rails
|
@@ -37,7 +37,7 @@ install:
|
|
37
37
|
- "sed -i \"/group :db do/a gem 'arel-extensions', require: 'arel/extensions', path: File.expand_path\\('~\\/build\\/malomalo\\/arel-extensions'\\)\" ~/build/rails/Gemfile"
|
38
38
|
- sed -i "/rb-inotify/d" ~/build/rails/Gemfile
|
39
39
|
- cat ~/build/rails/Gemfile
|
40
|
-
- bundle install --jobs=3 --retry=3
|
40
|
+
- bundle install --jobs=3 --retry=3 --full-index
|
41
41
|
- popd
|
42
42
|
|
43
43
|
script:
|
data/arel-extensions.gemspec
CHANGED
data/lib/arel/nodes/relation.rb
CHANGED
data/lib/arel/ts_predications.rb
CHANGED
@@ -2,11 +2,11 @@ module Arel
|
|
2
2
|
module TSPredications
|
3
3
|
|
4
4
|
def ts_query(expression, language=nil)
|
5
|
-
vector = Arel::Nodes::TSVector.new(self, language)
|
6
|
-
query = Arel::Nodes::TSQuery.new(expression, language)
|
5
|
+
vector = Arel::Nodes::TSVector.new(self, language: language)
|
6
|
+
query = Arel::Nodes::TSQuery.new(expression, language: language)
|
7
7
|
|
8
8
|
Arel::Nodes::TSMatch.new(vector, query)
|
9
9
|
end
|
10
10
|
|
11
11
|
end
|
12
|
-
end
|
12
|
+
end
|
@@ -6,30 +6,42 @@ module Arel
|
|
6
6
|
def visit_Arel_Nodes_Ascending o, collector
|
7
7
|
hash = visit(o.expr, collector)
|
8
8
|
|
9
|
-
case o.nulls
|
9
|
+
value = case o.nulls
|
10
10
|
when :nulls_first
|
11
|
-
|
11
|
+
{asc: :nulls_first}
|
12
12
|
when :nulls_last
|
13
|
-
|
13
|
+
{asc: :nulls_last}
|
14
14
|
else
|
15
|
-
|
15
|
+
:asc
|
16
16
|
end
|
17
17
|
|
18
|
+
if hash.is_a?(Hash)
|
19
|
+
add_to_bottom_of_hash_or_array(hash, value)
|
20
|
+
else
|
21
|
+
hash = { hash => value }
|
22
|
+
end
|
23
|
+
|
18
24
|
hash
|
19
25
|
end
|
20
26
|
|
21
27
|
def visit_Arel_Nodes_Descending o, collector
|
22
28
|
hash = visit(o.expr, collector)
|
23
|
-
|
24
|
-
case o.nulls
|
29
|
+
|
30
|
+
value = case o.nulls
|
25
31
|
when :nulls_first
|
26
|
-
|
32
|
+
{desc: :nulls_first}
|
27
33
|
when :nulls_last
|
28
|
-
|
34
|
+
{desc: :nulls_last}
|
29
35
|
else
|
30
|
-
|
36
|
+
:desc
|
31
37
|
end
|
32
|
-
|
38
|
+
|
39
|
+
if hash.is_a?(Hash)
|
40
|
+
add_to_bottom_of_hash_or_array(hash, value)
|
41
|
+
else
|
42
|
+
hash = { hash => value }
|
43
|
+
end
|
44
|
+
|
33
45
|
hash
|
34
46
|
end
|
35
47
|
|
data/test/sunstone_test.rb
CHANGED
@@ -97,5 +97,53 @@ class SunstoneTest < ActiveSupport::TestCase
|
|
97
97
|
# SQL
|
98
98
|
# end
|
99
99
|
|
100
|
+
test '::order(column.asc)' do
|
101
|
+
query = SunstoneProperty.order(SunstoneProperty.arel_table[:id].asc)
|
102
|
+
assert_sar(query, 'GET', '/sunstone_properties', {
|
103
|
+
order: [{ id: :asc }]
|
104
|
+
})
|
105
|
+
end
|
106
|
+
|
107
|
+
test '::order(column1.asc, column2.asc)' do
|
108
|
+
query = SunstoneProperty.order(SunstoneProperty.arel_table[:id].asc, SunstoneProperty.arel_table[:name].asc)
|
109
|
+
assert_sar(query, 'GET', '/sunstone_properties', {
|
110
|
+
order: [{ id: :asc }, { name: :asc }]
|
111
|
+
})
|
112
|
+
end
|
113
|
+
|
114
|
+
test '::order(column.desc)' do
|
115
|
+
query = SunstoneProperty.order(SunstoneProperty.arel_table[:id].desc)
|
116
|
+
assert_sar(query, 'GET', '/sunstone_properties', {
|
117
|
+
order: [{ id: :desc }]
|
118
|
+
})
|
119
|
+
end
|
120
|
+
|
121
|
+
test '::order(column.asc(:nulls_first))' do
|
122
|
+
query = SunstoneProperty.order(SunstoneProperty.arel_table[:id].asc(:nulls_first))
|
123
|
+
assert_sar(query, 'GET', '/sunstone_properties', {
|
124
|
+
order: [{ id: { asc: :nulls_first } }]
|
125
|
+
})
|
126
|
+
end
|
127
|
+
|
128
|
+
test '::order(column.asc(:nulls_last))' do
|
129
|
+
query = SunstoneProperty.order(SunstoneProperty.arel_table[:id].asc(:nulls_last))
|
130
|
+
assert_sar(query, 'GET', '/sunstone_properties', {
|
131
|
+
order: [{ id: { asc: :nulls_last } }]
|
132
|
+
})
|
133
|
+
end
|
134
|
+
|
135
|
+
test '::order(column.desc(:nulls_first))' do
|
136
|
+
query = SunstoneProperty.order(SunstoneProperty.arel_table[:id].desc(:nulls_first))
|
137
|
+
assert_sar(query, 'GET', '/sunstone_properties', {
|
138
|
+
order: [{ id: { desc: :nulls_first } }]
|
139
|
+
})
|
140
|
+
end
|
141
|
+
|
142
|
+
test '::order(column.desc(:nulls_last))' do
|
143
|
+
query = SunstoneProperty.order(SunstoneProperty.arel_table[:id].desc(:nulls_last))
|
144
|
+
assert_sar(query, 'GET', '/sunstone_properties', {
|
145
|
+
order: [{ id: { desc: :nulls_last } }]
|
146
|
+
})
|
147
|
+
end
|
100
148
|
|
101
149
|
end
|
data/test/test_helper.rb
CHANGED
@@ -180,7 +180,11 @@ class ActiveSupport::TestCase
|
|
180
180
|
assert_equal method, sar.method
|
181
181
|
assert_equal path, sar.path.split('?').first
|
182
182
|
assert_equal deep_transform_query(query_params), MessagePack.unpack(CGI::unescape(sar.path.split('?').last))
|
183
|
-
|
183
|
+
if body.nil?
|
184
|
+
assert_nil sar.body
|
185
|
+
else
|
186
|
+
assert_equal body, sar.body
|
187
|
+
end
|
184
188
|
end
|
185
189
|
|
186
190
|
def assert_sql(expected, query)
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: arel-extensions
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 6.0.0.
|
4
|
+
version: 6.0.0.8
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Jon Bracy
|
8
|
-
autorequire:
|
8
|
+
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2020-06-26 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: activerecord
|
@@ -136,7 +136,7 @@ dependencies:
|
|
136
136
|
- - ">="
|
137
137
|
- !ruby/object:Gem::Version
|
138
138
|
version: '0'
|
139
|
-
description:
|
139
|
+
description:
|
140
140
|
email:
|
141
141
|
- jonbracy@gmail.com
|
142
142
|
executables: []
|
@@ -146,7 +146,6 @@ files:
|
|
146
146
|
- ".gitignore"
|
147
147
|
- ".travis.yml"
|
148
148
|
- Gemfile
|
149
|
-
- Gemfile.lock
|
150
149
|
- LICENSE
|
151
150
|
- README.md
|
152
151
|
- Rakefile
|
@@ -190,7 +189,7 @@ homepage: https://github.com/malomalo/arel-extensions
|
|
190
189
|
licenses:
|
191
190
|
- MIT
|
192
191
|
metadata: {}
|
193
|
-
post_install_message:
|
192
|
+
post_install_message:
|
194
193
|
rdoc_options: []
|
195
194
|
require_paths:
|
196
195
|
- lib
|
@@ -205,8 +204,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
205
204
|
- !ruby/object:Gem::Version
|
206
205
|
version: '0'
|
207
206
|
requirements: []
|
208
|
-
rubygems_version: 3.
|
209
|
-
signing_key:
|
207
|
+
rubygems_version: 3.1.2
|
208
|
+
signing_key:
|
210
209
|
specification_version: 4
|
211
210
|
summary: Adds support for missing SQL operators and functions to Arel
|
212
211
|
test_files:
|
data/Gemfile.lock
DELETED
@@ -1,73 +0,0 @@
|
|
1
|
-
PATH
|
2
|
-
remote: .
|
3
|
-
specs:
|
4
|
-
arel-extensions (6.0.0.5)
|
5
|
-
activerecord (>= 6.0.0)
|
6
|
-
|
7
|
-
GEM
|
8
|
-
remote: https://rubygems.org/
|
9
|
-
specs:
|
10
|
-
activemodel (6.0.0)
|
11
|
-
activesupport (= 6.0.0)
|
12
|
-
activerecord (6.0.0)
|
13
|
-
activemodel (= 6.0.0)
|
14
|
-
activesupport (= 6.0.0)
|
15
|
-
activesupport (6.0.0)
|
16
|
-
concurrent-ruby (~> 1.0, >= 1.0.2)
|
17
|
-
i18n (>= 0.7, < 2)
|
18
|
-
minitest (~> 5.1)
|
19
|
-
tzinfo (~> 1.1)
|
20
|
-
zeitwerk (~> 2.1, >= 2.1.8)
|
21
|
-
addressable (2.7.0)
|
22
|
-
public_suffix (>= 2.0.2, < 5.0)
|
23
|
-
ansi (1.5.0)
|
24
|
-
builder (3.2.3)
|
25
|
-
concurrent-ruby (1.1.5)
|
26
|
-
cookie_store (0.1.4)
|
27
|
-
crack (0.4.3)
|
28
|
-
safe_yaml (~> 1.0.0)
|
29
|
-
hashdiff (1.0.0)
|
30
|
-
i18n (1.6.0)
|
31
|
-
concurrent-ruby (~> 1.0)
|
32
|
-
minitest (5.11.3)
|
33
|
-
minitest-reporters (1.3.8)
|
34
|
-
ansi
|
35
|
-
builder
|
36
|
-
minitest (>= 5.0)
|
37
|
-
ruby-progressbar
|
38
|
-
msgpack (1.3.1)
|
39
|
-
pg (1.1.4)
|
40
|
-
public_suffix (4.0.1)
|
41
|
-
rake (12.3.3)
|
42
|
-
rgeo (2.1.0)
|
43
|
-
ruby-progressbar (1.10.1)
|
44
|
-
safe_yaml (1.0.5)
|
45
|
-
sunstone (6.0.0.5)
|
46
|
-
activerecord (>= 6.0.0.rc1)
|
47
|
-
cookie_store
|
48
|
-
msgpack
|
49
|
-
thread_safe (0.3.6)
|
50
|
-
tzinfo (1.2.5)
|
51
|
-
thread_safe (~> 0.1)
|
52
|
-
webmock (3.7.6)
|
53
|
-
addressable (>= 2.3.6)
|
54
|
-
crack (>= 0.3.2)
|
55
|
-
hashdiff (>= 0.4.0, < 2.0.0)
|
56
|
-
zeitwerk (2.1.10)
|
57
|
-
|
58
|
-
PLATFORMS
|
59
|
-
ruby
|
60
|
-
|
61
|
-
DEPENDENCIES
|
62
|
-
arel-extensions!
|
63
|
-
bundler
|
64
|
-
minitest
|
65
|
-
minitest-reporters
|
66
|
-
pg
|
67
|
-
rake
|
68
|
-
rgeo
|
69
|
-
sunstone
|
70
|
-
webmock
|
71
|
-
|
72
|
-
BUNDLED WITH
|
73
|
-
1.17.3
|