qx 0.0.1 → 0.1.0
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/qx.rb +10 -5
- metadata +44 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: da84281b0de741a1780f3fa643daf02e3b691671
|
4
|
+
data.tar.gz: 65c38257753df4fb129630522ca3934c5d2943ba
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 62f33a4c224b0bc9d4603f01f3a868083308c535afb02af57a5d36e9f9dff989732f2dfe04e116b6ca24104aa8e56ffb7893bbc325e32c4f2ac74632e41536ee
|
7
|
+
data.tar.gz: 7616b07ac34d57f16651ad54e116de428213a9b768e5783cfcf45a220683d85d0382edce24e0377c26087049e6a7899d15a3568d0dc353bc962e23a97519a70c
|
data/lib/qx.rb
CHANGED
@@ -1,8 +1,5 @@
|
|
1
|
-
require 'uri'
|
2
1
|
require 'active_record'
|
3
|
-
require 'colorize'
|
4
|
-
|
5
|
-
|
2
|
+
require 'colorize'
|
6
3
|
class Qx
|
7
4
|
|
8
5
|
##
|
@@ -12,6 +9,7 @@ class Qx
|
|
12
9
|
# Include the full url including userpass and database name
|
13
10
|
# For example:
|
14
11
|
# Qx.config(database_url: 'postgres://admin:password@localhost/database_name')
|
12
|
+
@@type_map = nil
|
15
13
|
def self.config(h)
|
16
14
|
@@type_map = h[:type_map]
|
17
15
|
end
|
@@ -31,7 +29,7 @@ class Qx
|
|
31
29
|
def self.parse_select(expr)
|
32
30
|
str = 'SELECT'
|
33
31
|
str += " DISTINCT ON (#{expr[:DISTINCT_ON].map(&:to_s).join(', ')})" if expr[:DISTINCT_ON]
|
34
|
-
str += ' ' + expr[:SELECT].join(", ")
|
32
|
+
str += ' ' + expr[:SELECT].map{|expr| expr.is_a?(Qx) ? expr.parse : expr}.join(", ")
|
35
33
|
throw ArgumentError.new("FROM clause is missing for SELECT") unless expr[:FROM]
|
36
34
|
str += ' FROM ' + expr[:FROM]
|
37
35
|
str += expr[:JOIN].map{|from, cond| " JOIN #{from} ON #{cond}"}.join if expr[:JOIN]
|
@@ -112,9 +110,16 @@ class Qx
|
|
112
110
|
data = result.map{|h| h}
|
113
111
|
end
|
114
112
|
result.clear
|
113
|
+
data = data.map{|row| apply_nesting(row)} if options[:nesting]
|
115
114
|
return data
|
116
115
|
end
|
117
116
|
|
117
|
+
# helpers for JSON conversion
|
118
|
+
def to_json(name)
|
119
|
+
name = name.to_s
|
120
|
+
Qx.select("array_to_json(array_agg(row_to_json(#{name})))").from(self.as(name))
|
121
|
+
end
|
122
|
+
|
118
123
|
# -- Top-level clauses
|
119
124
|
|
120
125
|
def self.select(*cols)
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: qx
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0
|
4
|
+
version: 0.1.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Jay R Bolton
|
@@ -9,7 +9,49 @@ autorequire:
|
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
11
|
date: 2016-05-18 00:00:00.000000000 Z
|
12
|
-
dependencies:
|
12
|
+
dependencies:
|
13
|
+
- !ruby/object:Gem::Dependency
|
14
|
+
name: colorize
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
16
|
+
requirements:
|
17
|
+
- - "~>"
|
18
|
+
- !ruby/object:Gem::Version
|
19
|
+
version: '0.8'
|
20
|
+
type: :runtime
|
21
|
+
prerelease: false
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
23
|
+
requirements:
|
24
|
+
- - "~>"
|
25
|
+
- !ruby/object:Gem::Version
|
26
|
+
version: '0.8'
|
27
|
+
- !ruby/object:Gem::Dependency
|
28
|
+
name: activerecord
|
29
|
+
requirement: !ruby/object:Gem::Requirement
|
30
|
+
requirements:
|
31
|
+
- - ">="
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: '3.0'
|
34
|
+
type: :runtime
|
35
|
+
prerelease: false
|
36
|
+
version_requirements: !ruby/object:Gem::Requirement
|
37
|
+
requirements:
|
38
|
+
- - ">="
|
39
|
+
- !ruby/object:Gem::Version
|
40
|
+
version: '3.0'
|
41
|
+
- !ruby/object:Gem::Dependency
|
42
|
+
name: minitest
|
43
|
+
requirement: !ruby/object:Gem::Requirement
|
44
|
+
requirements:
|
45
|
+
- - "~>"
|
46
|
+
- !ruby/object:Gem::Version
|
47
|
+
version: '5.9'
|
48
|
+
type: :development
|
49
|
+
prerelease: false
|
50
|
+
version_requirements: !ruby/object:Gem::Requirement
|
51
|
+
requirements:
|
52
|
+
- - "~>"
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
version: '5.9'
|
13
55
|
description: A expression builder for SQL expressions with Postgresql support
|
14
56
|
email: jayrbolton@gmail.com
|
15
57
|
executables: []
|