i_dig_sql 0.0.4 → 0.1.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: a7935c90bb6a2a1905d660337a7e4b5875c5a137
4
- data.tar.gz: 9a33d2b2dc1021e457055d4afb1d898365b368df
3
+ metadata.gz: f0aaa663a548e6732d8430f8c09d9dcfe8eec2fb
4
+ data.tar.gz: 9ed810dd2a96f8ce92ad0ddad3ce93bb673a1ff9
5
5
  SHA512:
6
- metadata.gz: 7686a037ab4e9291ea9184f731b29c1e76226376f192a964929f7d91e321c14128e42562607b534430a94b343ec7d9d5aa733bce6d9468b73b1435a6c9c2b94e
7
- data.tar.gz: c3df8799043ef5619baa0059fb732e9cd470073a6fcd9c1fc8df7a06036a5fdfccfe71384f0c5b6caa37d463ab88d4121d64cfd7a5b7143221cfa349bc5dd219
6
+ metadata.gz: f859fc97e346983a7a5e5333bacda32623439fdbc5421579b3780dfad34d9eced7236d66bb2d55f4f4c87b7080a21a0706c3b2d662c75a93423a253e187602a9
7
+ data.tar.gz: 6e75aa07f361a036b505923b0f16478c3668566b0f429796c5714de31ed0e2c27c77424dae4cb874c26716cb454fd5a7fb46eb648a186d7d8a84cd28f718cdc9
data/README.md CHANGED
@@ -15,5 +15,9 @@ This is not yet usable.
15
15
  Not coming anytime soon.
16
16
 
17
17
 
18
+ ## Alternatives:
19
+
20
+ * K'bam [https://github.com/vilnius-leopold/kbam](https://github.com/vilnius-leopold/kbam)
21
+
18
22
 
19
23
 
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.0.4
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
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-03-22 00:00:00.000000000 Z
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
  - - "~>"