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 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
  - - "~>"