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.
Files changed (3) hide show
  1. checksums.yaml +4 -4
  2. data/lib/qx.rb +10 -5
  3. metadata +44 -2
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: a558a9c173beb2047e5c83c5959c2ebb0c00952e
4
- data.tar.gz: 1419ef67b882bcb1e831284fc13903daab8cc948
3
+ metadata.gz: da84281b0de741a1780f3fa643daf02e3b691671
4
+ data.tar.gz: 65c38257753df4fb129630522ca3934c5d2943ba
5
5
  SHA512:
6
- metadata.gz: 371152ed4d23950f658964dd79613e2a2434cdc7066579030a559ac376d283cc833fb9b6f86dbdbcf83ca235ef77b4aa5071517613b71573d7dc6a68eaf10bd4
7
- data.tar.gz: 2aa4f770de70ffda4da9e8473616c7b035cf6a6b7744bf9083a03d984f006db9e9fa824a9361ae4acc678057c73f0b622fa0326ae19c412c3db8c8ac8c412f64
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' # for pretty printing/debugging
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.1
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: []