sql_query_executor 0.3.4 → 0.3.5
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
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 3b41537dd11ea282bce2972c2cb2016fa5de5d43
|
4
|
+
data.tar.gz: b260c9d62dc105fb7a9fab1c1a6bacff6d8a50fa
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 6dc13927e1330a1a56d7e07d60cf67b24b3ab59aaf9bb83628f50bac83d0902464b044e3dad8a23e1fd07c64844aa8ee681adda085cefb1521cf9812be0ef158
|
7
|
+
data.tar.gz: e444ed8beaad6bc844dd4c0a0cbf7022c7a55c0ded9f4d52dca02ca7a93b0e3f9f187824a146b7cfbf12ecb56f65e73ae4e8ebfc2c40615dd50177f2e332899e
|
@@ -31,7 +31,8 @@ module SqlQueryExecutor
|
|
31
31
|
end
|
32
32
|
|
33
33
|
def self.remove_placeholders(query)
|
34
|
-
query.gsub(Base::QUERY_SPACE, ' ').gsub(Base::STRING_SPACE, ' ').gsub(Base::TEMP_SPACE, ' ')
|
34
|
+
new_query = query.gsub(Base::QUERY_SPACE, ' ').gsub(Base::STRING_SPACE, ' ').gsub(Base::TEMP_SPACE, ' ')
|
35
|
+
new_query.gsub('"null"', 'null').gsub("'null'", 'null')
|
35
36
|
end
|
36
37
|
|
37
38
|
def self.clean_query_attribute(query)
|
@@ -50,6 +51,7 @@ module SqlQueryExecutor
|
|
50
51
|
def self.interpolate_query(args)
|
51
52
|
args.flatten!
|
52
53
|
return args.first if args.size == 1 && args.first.is_a?(String)
|
54
|
+
return interpolate_hash(args) if args[1].is_a?(Hash)
|
53
55
|
|
54
56
|
query = args.first
|
55
57
|
param = args.delete_at(1)
|
@@ -61,6 +63,12 @@ module SqlQueryExecutor
|
|
61
63
|
interpolate_query(args)
|
62
64
|
end
|
63
65
|
|
66
|
+
def self.interpolate_hash(args)
|
67
|
+
hash = args[1]
|
68
|
+
|
69
|
+
args.first.gsub(/:(\S+)/) { |match| convert_param(hash[match.gsub(":", '').to_sym]) }
|
70
|
+
end
|
71
|
+
|
64
72
|
# Removes all accents and other non default characters
|
65
73
|
def self.sanitize(query)
|
66
74
|
new_query = replace_on_query(query, /(["|'].*?["|'])/, " ", Base::STRING_SPACE)
|
@@ -81,12 +81,19 @@ describe SqlQueryExecutor::Base do
|
|
81
81
|
end
|
82
82
|
|
83
83
|
context 'to_sql' do
|
84
|
-
let(:query) { "name = 'Brazil'" }
|
85
|
-
let(:selector) { {name: 'Brazil'} }
|
86
|
-
|
87
84
|
it 'converts selector' do
|
85
|
+
query = "name = 'Brazil'"
|
86
|
+
selector = {name: 'Brazil'}
|
87
|
+
|
88
88
|
expect(described_class.new([], selector).to_sql).to eq query
|
89
89
|
end
|
90
|
+
|
91
|
+
it 'removes quotes from null' do
|
92
|
+
wrong_query = "id is not 'null'"
|
93
|
+
right_query = 'id is not null'
|
94
|
+
|
95
|
+
expect(described_class.new([], wrong_query).to_sql).to eq right_query
|
96
|
+
end
|
90
97
|
end
|
91
98
|
end
|
92
99
|
end
|
data/sql_query_executor.gemspec
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: sql_query_executor
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.3.
|
4
|
+
version: 0.3.5
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Caio Torres
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2014-03
|
11
|
+
date: 2014-04-03 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rspec
|
@@ -52,6 +52,20 @@ dependencies:
|
|
52
52
|
- - '>='
|
53
53
|
- !ruby/object:Gem::Version
|
54
54
|
version: '0'
|
55
|
+
- !ruby/object:Gem::Dependency
|
56
|
+
name: pry
|
57
|
+
requirement: !ruby/object:Gem::Requirement
|
58
|
+
requirements:
|
59
|
+
- - '>='
|
60
|
+
- !ruby/object:Gem::Version
|
61
|
+
version: '0'
|
62
|
+
type: :development
|
63
|
+
prerelease: false
|
64
|
+
version_requirements: !ruby/object:Gem::Requirement
|
65
|
+
requirements:
|
66
|
+
- - '>='
|
67
|
+
- !ruby/object:Gem::Version
|
68
|
+
version: '0'
|
55
69
|
description: Gem to run SQL like queries on array of hashes or similar objects
|
56
70
|
email:
|
57
71
|
- efreesen@gmail.com
|