i_dig_sql 0.0.4 → 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/README.md +4 -0
- data/VERSION +1 -1
- data/i_dig_sql.gemspec +2 -1
- data/lib/i_dig_sql.rb +18 -0
- data/specs/i_dig_sql.rb +65 -0
- metadata +16 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: f0aaa663a548e6732d8430f8c09d9dcfe8eec2fb
|
4
|
+
data.tar.gz: 9ed810dd2a96f8ce92ad0ddad3ce93bb673a1ff9
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: f859fc97e346983a7a5e5333bacda32623439fdbc5421579b3780dfad34d9eced7236d66bb2d55f4f4c87b7080a21a0706c3b2d662c75a93423a253e187602a9
|
7
|
+
data.tar.gz: 6e75aa07f361a036b505923b0f16478c3668566b0f429796c5714de31ed0e2c27c77424dae4cb874c26716cb454fd5a7fb46eb648a186d7d8a84cd28f718cdc9
|
data/README.md
CHANGED
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.0
|
1
|
+
0.1.0
|
data/i_dig_sql.gemspec
CHANGED
@@ -24,6 +24,7 @@ Gem::Specification.new do |spec|
|
|
24
24
|
|
25
25
|
spec.add_development_dependency "bundler" , "~> 1.5"
|
26
26
|
spec.add_development_dependency "rake" , '~> 0'
|
27
|
-
spec.add_development_dependency "bacon" , '~> 0'
|
27
|
+
spec.add_development_dependency "bacon" , '~> 1.0'
|
28
|
+
spec.add_development_dependency "Bacon_Colored" , '~> 0'
|
28
29
|
spec.add_development_dependency "pry" , '~> 0'
|
29
30
|
end
|
data/lib/i_dig_sql.rb
CHANGED
@@ -8,6 +8,7 @@ class I_Dig_Sql
|
|
8
8
|
|
9
9
|
def initialize sql = nil, *args
|
10
10
|
@withs = []
|
11
|
+
@tags_for_withs = {}
|
11
12
|
@select = nil
|
12
13
|
@as = nil
|
13
14
|
@unions = []
|
@@ -33,6 +34,7 @@ class I_Dig_Sql
|
|
33
34
|
|
34
35
|
def WITH o, *args
|
35
36
|
@withs << o
|
37
|
+
@tags_for_withs[o] = []
|
36
38
|
@args.concat(o.args) if o.is_a?(I_Dig_Sql)
|
37
39
|
@args.concat args
|
38
40
|
self
|
@@ -40,6 +42,22 @@ class I_Dig_Sql
|
|
40
42
|
|
41
43
|
alias_method :comma, :WITH
|
42
44
|
|
45
|
+
def tag_as name
|
46
|
+
list = @tags_for_withs[@withs.last]
|
47
|
+
raise "Last query was not a WITH/cte query" unless list
|
48
|
+
list.push name
|
49
|
+
self
|
50
|
+
end
|
51
|
+
|
52
|
+
def find_tagged name
|
53
|
+
@tags_for_withs.inject([]) { |memo, (k,v)|
|
54
|
+
if v.include?(name)
|
55
|
+
memo << k
|
56
|
+
end
|
57
|
+
memo
|
58
|
+
}
|
59
|
+
end
|
60
|
+
|
43
61
|
def SELECT str, *args
|
44
62
|
@select = {:select=>str, :args=>args, :from=>nil, :where=>nil}
|
45
63
|
|
data/specs/i_dig_sql.rb
CHANGED
@@ -1,4 +1,6 @@
|
|
1
1
|
|
2
|
+
require "pry"
|
3
|
+
require "Bacon_Colored"
|
2
4
|
require "i_dig_sql"
|
3
5
|
require "i_dig_sql/String"
|
4
6
|
|
@@ -166,3 +168,66 @@ describe "String#i_dig_sql" do
|
|
166
168
|
|
167
169
|
end # === describe String ===
|
168
170
|
|
171
|
+
|
172
|
+
describe ".tag_as" do
|
173
|
+
|
174
|
+
it "adds tag to tag list of last query" do
|
175
|
+
o = "SELECT *".i_dig_sql
|
176
|
+
o.WITH("cte1 AS (SELECT * FROM table_1)")
|
177
|
+
.tag_as('group 1')
|
178
|
+
o.WITH("cte2 AS (SELECT * FROM table_2)")
|
179
|
+
.tag_as('group 1')
|
180
|
+
|
181
|
+
list = o.find_tagged('group 1')
|
182
|
+
list.size.should == 2
|
183
|
+
sql(list.first).should == sql("cte1 AS (SELECT * FROM table_1)")
|
184
|
+
sql(list.last).should == sql("cte2 AS (SELECT * FROM table_2)")
|
185
|
+
end
|
186
|
+
|
187
|
+
it "raises error if last query was not a WITH/cte" do
|
188
|
+
o = "SELECT *".i_dig_sql
|
189
|
+
should.raise(RuntimeError) {
|
190
|
+
o.tag_as('group 1')
|
191
|
+
}.message.should.match /Last query was not a WITH\/cte/i
|
192
|
+
end
|
193
|
+
|
194
|
+
end # === describe .tag_as ===
|
195
|
+
|
196
|
+
describe ".find_tagged" do
|
197
|
+
|
198
|
+
it "returns all WITH/cte querys with tag" do
|
199
|
+
o = "SELECT *".i_dig_sql
|
200
|
+
o.WITH("cte1 AS (SELECT * FROM table_1)")
|
201
|
+
.tag_as('group 1')
|
202
|
+
o.WITH("cte2 AS (SELECT * FROM table_2)")
|
203
|
+
.tag_as('group 1')
|
204
|
+
|
205
|
+
list = o.find_tagged('group 1')
|
206
|
+
list.size.should == 2
|
207
|
+
sql(list.first).should == sql("cte1 AS (SELECT * FROM table_1)")
|
208
|
+
sql(list.last).should == sql("cte2 AS (SELECT * FROM table_2)")
|
209
|
+
end
|
210
|
+
|
211
|
+
it "only returns WITH/cte querys with tags, and no others" do
|
212
|
+
o = "SELECT *".i_dig_sql
|
213
|
+
o.WITH("cte1 AS (SELECT * FROM table_1)").tag_as('group 1')
|
214
|
+
o.WITH("cte2 AS (SELECT * FROM table_2)").tag_as('group 1')
|
215
|
+
o.WITH("cte3 AS (SELECT * FROM table_3)").tag_as('group 2')
|
216
|
+
|
217
|
+
list = o.find_tagged('group 1')
|
218
|
+
list.size.should == 2
|
219
|
+
sql(list.first).should == sql("cte1 AS (SELECT * FROM table_1)")
|
220
|
+
sql(list.last).should == sql("cte2 AS (SELECT * FROM table_2)")
|
221
|
+
end
|
222
|
+
|
223
|
+
end # === describe find_tagged ===
|
224
|
+
|
225
|
+
|
226
|
+
|
227
|
+
|
228
|
+
|
229
|
+
|
230
|
+
|
231
|
+
|
232
|
+
|
233
|
+
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: i_dig_sql
|
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
|
- da99
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2014-
|
11
|
+
date: 2014-04-01 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -40,6 +40,20 @@ dependencies:
|
|
40
40
|
version: '0'
|
41
41
|
- !ruby/object:Gem::Dependency
|
42
42
|
name: bacon
|
43
|
+
requirement: !ruby/object:Gem::Requirement
|
44
|
+
requirements:
|
45
|
+
- - "~>"
|
46
|
+
- !ruby/object:Gem::Version
|
47
|
+
version: '1.0'
|
48
|
+
type: :development
|
49
|
+
prerelease: false
|
50
|
+
version_requirements: !ruby/object:Gem::Requirement
|
51
|
+
requirements:
|
52
|
+
- - "~>"
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
version: '1.0'
|
55
|
+
- !ruby/object:Gem::Dependency
|
56
|
+
name: Bacon_Colored
|
43
57
|
requirement: !ruby/object:Gem::Requirement
|
44
58
|
requirements:
|
45
59
|
- - "~>"
|