sqldsl 1.3.1 → 1.3.2
Sign up to get free protection for your applications and to get access to all the features.
- data/README +1 -1
- data/lib/numeric.rb +6 -1
- data/lib/select.rb +9 -4
- data/lib/sqldsl.rb +0 -1
- data/lib/string.rb +6 -1
- data/lib/symbol.rb +6 -1
- data/rakefile.rb +1 -1
- data/test/numeric_test.rb +1 -1
- data/test/select_acceptance_test.rb +1 -1
- data/test/select_test.rb +3 -3
- data/test/string_test.rb +1 -1
- data/test/symbol_test.rb +1 -1
- metadata +2 -4
- data/lib/hash.rb +0 -16
- data/test/hash_test.rb +0 -9
data/README
CHANGED
@@ -149,7 +149,7 @@ See the tests for more examples
|
|
149
149
|
|
150
150
|
def test_columns_in_inner_where_are_validated_against_outer_tables
|
151
151
|
statement = Select.all.from[:table].where do
|
152
|
-
exists(Select.all.from[:inner_table
|
152
|
+
exists(Select.all.from[:inner_table.as(:aliased)].where do
|
153
153
|
table.column1 = aliased.column1
|
154
154
|
end)
|
155
155
|
end
|
data/lib/numeric.rb
CHANGED
@@ -8,7 +8,12 @@ class Numeric
|
|
8
8
|
self
|
9
9
|
end
|
10
10
|
|
11
|
+
# call-seq: numeric.as(alias_name) -> a_symbol
|
12
|
+
#
|
13
|
+
# Returns the number aliased (including 'as') as the aliased name
|
14
|
+
#
|
15
|
+
# 10.as(:column1) #=> :"10 as column"
|
11
16
|
def as(alias_name)
|
12
|
-
"#{self} as #{alias_name}"
|
17
|
+
"#{self} as #{alias_name}".to_sym
|
13
18
|
end
|
14
19
|
end
|
data/lib/select.rb
CHANGED
@@ -45,11 +45,16 @@ class Select < SqlStatement
|
|
45
45
|
#
|
46
46
|
# Select[1, :column1, 'book'].from[:table1, :table2].to_sql #=> "select 1, column1, 'book' from table1, table2"
|
47
47
|
def [](*table_names)
|
48
|
-
@tables =
|
49
|
-
|
48
|
+
@tables = []
|
50
49
|
@to_sql += table_names.inject([]) do |result, element|
|
51
|
-
|
52
|
-
|
50
|
+
if element.to_s =~ / as /
|
51
|
+
@tables << element.to_s.split(/ as /).last.to_sym
|
52
|
+
result << element.to_s.gsub(/ as /, " ").to_sym
|
53
|
+
else
|
54
|
+
@tables << element
|
55
|
+
result << element
|
56
|
+
end
|
57
|
+
end.to_sql
|
53
58
|
self
|
54
59
|
end
|
55
60
|
|
data/lib/sqldsl.rb
CHANGED
@@ -2,7 +2,6 @@ require File.dirname(__FILE__) + '/receive_any.rb'
|
|
2
2
|
require File.dirname(__FILE__) + '/symbol.rb'
|
3
3
|
require File.dirname(__FILE__) + '/array.rb'
|
4
4
|
require File.dirname(__FILE__) + '/string.rb'
|
5
|
-
require File.dirname(__FILE__) + '/hash.rb'
|
6
5
|
require File.dirname(__FILE__) + '/numeric.rb'
|
7
6
|
require File.dirname(__FILE__) + '/time.rb'
|
8
7
|
require File.dirname(__FILE__) + '/sql_statement.rb'
|
data/lib/string.rb
CHANGED
@@ -8,8 +8,13 @@ class String
|
|
8
8
|
"'#{self.gsub(/'/, "''")}'"
|
9
9
|
end
|
10
10
|
|
11
|
+
# call-seq: string.as(alias_name) -> a_symbol
|
12
|
+
#
|
13
|
+
# Returns the string aliased (including 'as') as the aliased name
|
14
|
+
#
|
15
|
+
# "book".as(:category) #=> :"'book' as category"
|
11
16
|
def as(alias_name)
|
12
|
-
"#{self.to_sql} as #{alias_name}"
|
17
|
+
"#{self.to_sql} as #{alias_name}".to_sym
|
13
18
|
end
|
14
19
|
|
15
20
|
end
|
data/lib/symbol.rb
CHANGED
@@ -8,8 +8,13 @@ class Symbol
|
|
8
8
|
to_s
|
9
9
|
end
|
10
10
|
|
11
|
+
# call-seq: symbol.as(alias_name) -> a_symbol
|
12
|
+
#
|
13
|
+
# Returns the symbol aliased (including 'as') as the aliased name
|
14
|
+
#
|
15
|
+
# :book.as(:category) #=> :"book as category"
|
11
16
|
def as(alias_name)
|
12
|
-
"#{self} as #{alias_name}"
|
17
|
+
"#{self} as #{alias_name}".to_sym
|
13
18
|
end
|
14
19
|
|
15
20
|
end
|
data/rakefile.rb
CHANGED
@@ -27,7 +27,7 @@ Gem::manage_gems
|
|
27
27
|
specification = Gem::Specification.new do |s|
|
28
28
|
s.name = "sqldsl"
|
29
29
|
s.summary = "A DSL for creating SQL Statements"
|
30
|
-
s.version = "1.3.
|
30
|
+
s.version = "1.3.2"
|
31
31
|
s.author = 'Jay Fields'
|
32
32
|
s.description = "A DSL for creating SQL Statements"
|
33
33
|
s.email = 'sqldsl-developer@rubyforge.org'
|
data/test/numeric_test.rb
CHANGED
@@ -73,7 +73,7 @@ class SelectAcceptanceTest < Test::Unit::TestCase
|
|
73
73
|
|
74
74
|
def test_columns_in_inner_where_are_validated_against_outer_tables
|
75
75
|
statement = Select.all.from[:table].where do
|
76
|
-
exists(Select.all.from[:inner_table
|
76
|
+
exists(Select.all.from[:inner_table.as(:aliased)].where do
|
77
77
|
table.column1 = aliased.column1
|
78
78
|
end)
|
79
79
|
end
|
data/test/select_test.rb
CHANGED
@@ -23,7 +23,7 @@ class SelectTest < Test::Unit::TestCase
|
|
23
23
|
end
|
24
24
|
|
25
25
|
def test_select_with_multiple_tables
|
26
|
-
assert_equal 'select column from
|
26
|
+
assert_equal 'select column from foo, bar', Select[:column].from[:foo, :bar].to_sql
|
27
27
|
end
|
28
28
|
|
29
29
|
def test_order_by
|
@@ -39,11 +39,11 @@ class SelectTest < Test::Unit::TestCase
|
|
39
39
|
end
|
40
40
|
|
41
41
|
def test_column_aliasing
|
42
|
-
assert_equal
|
42
|
+
assert_equal "select column1 as foo, 2 as bar, 'foo' as baz", Select[:column1.as(:foo), 2.as(:bar), 'foo'.as(:baz)].to_sql
|
43
43
|
end
|
44
44
|
|
45
45
|
def test_table_aliasing
|
46
|
-
assert_equal 'select * from table1 foo, table2 bar', Select.all.from[:table1
|
46
|
+
assert_equal 'select * from table1 foo, table2 bar, table3', Select.all.from[:table1.as(:foo), :table2.as(:bar), :table3].to_sql
|
47
47
|
end
|
48
48
|
|
49
49
|
def test_tables_no_aliasing
|
data/test/string_test.rb
CHANGED
data/test/symbol_test.rb
CHANGED
metadata
CHANGED
@@ -3,8 +3,8 @@ rubygems_version: 0.8.11
|
|
3
3
|
specification_version: 1
|
4
4
|
name: sqldsl
|
5
5
|
version: !ruby/object:Gem::Version
|
6
|
-
version: 1.3.
|
7
|
-
date: 2007-03-
|
6
|
+
version: 1.3.2
|
7
|
+
date: 2007-03-16 00:00:00 -04:00
|
8
8
|
summary: A DSL for creating SQL Statements
|
9
9
|
require_paths:
|
10
10
|
- lib
|
@@ -31,7 +31,6 @@ files:
|
|
31
31
|
- lib/array.rb
|
32
32
|
- lib/delete.rb
|
33
33
|
- lib/distinct_select.rb
|
34
|
-
- lib/hash.rb
|
35
34
|
- lib/insert.rb
|
36
35
|
- lib/numeric.rb
|
37
36
|
- lib/or_where_builder.rb
|
@@ -48,7 +47,6 @@ files:
|
|
48
47
|
- test/array_test.rb
|
49
48
|
- test/delete_acceptance_test.rb
|
50
49
|
- test/delete_test.rb
|
51
|
-
- test/hash_test.rb
|
52
50
|
- test/insert_acceptance_test.rb
|
53
51
|
- test/insert_test.rb
|
54
52
|
- test/numeric_test.rb
|
data/lib/hash.rb
DELETED
@@ -1,16 +0,0 @@
|
|
1
|
-
class Hash
|
2
|
-
|
3
|
-
# call-seq: hash.to_sql -> a_string
|
4
|
-
#
|
5
|
-
# Returns a string with single quotes escaped.
|
6
|
-
#
|
7
|
-
# {:column1 => :foo, :column2 => :bar}.to_sql #=> "column1 as foo, column2 as bar"
|
8
|
-
def to_sql
|
9
|
-
result = []
|
10
|
-
each_pair do |key, value|
|
11
|
-
result << "#{key} as #{value}".to_sym
|
12
|
-
end
|
13
|
-
result.sort{ |x,y| x.to_s <=> y.to_s }.to_sql
|
14
|
-
end
|
15
|
-
|
16
|
-
end
|