aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorNick Kallen <nkallen@nick-kallens-computer-2.local>2007-12-30 17:35:23 -0800
committerNick Kallen <nkallen@nick-kallens-computer-2.local>2007-12-30 17:35:23 -0800
commit1a59c8cbc90d37fa571c12049d0e43aa44d46388 (patch)
tree021bcf5e92274cfcbbd43541b1ab4e57a6a8275e
parent63b9c6a41f7ab92a16362a50b60bcea7e20cb427 (diff)
downloadrails-1a59c8cbc90d37fa571c12049d0e43aa44d46388.tar.gz
rails-1a59c8cbc90d37fa571c12049d0e43aa44d46388.tar.bz2
rails-1a59c8cbc90d37fa571c12049d0e43aa44d46388.zip
sql builder
-rw-r--r--lib/sql_algebra.rb3
-rw-r--r--lib/sql_algebra/relations/table_relation.rb5
-rw-r--r--lib/sql_algebra/sql/select.rb23
-rw-r--r--spec/relations/table_relation_spec.rb5
-rw-r--r--spec/spec_helper.rb7
-rw-r--r--spec/sql/select_spec.rb19
6 files changed, 16 insertions, 46 deletions
diff --git a/lib/sql_algebra.rb b/lib/sql_algebra.rb
index 8adbed150d..79bdc8a449 100644
--- a/lib/sql_algebra.rb
+++ b/lib/sql_algebra.rb
@@ -29,4 +29,5 @@ require 'sql_algebra/predicates/match_predicate'
require 'sql_algebra/extensions/range'
-require 'sql_algebra/sql/select' \ No newline at end of file
+require 'sql_algebra/sql_builder/sql_builder'
+require 'sql_algebra/sql_builder/select_builder' \ No newline at end of file
diff --git a/lib/sql_algebra/relations/table_relation.rb b/lib/sql_algebra/relations/table_relation.rb
index dd4987c3e1..17cdbab61a 100644
--- a/lib/sql_algebra/relations/table_relation.rb
+++ b/lib/sql_algebra/relations/table_relation.rb
@@ -6,6 +6,9 @@ class TableRelation < Relation
end
def to_sql
- Select.new(:*).from(table)
+ SelectBuilder.new do
+ select :*
+ from table
+ end
end
end \ No newline at end of file
diff --git a/lib/sql_algebra/sql/select.rb b/lib/sql_algebra/sql/select.rb
deleted file mode 100644
index da92ad3a52..0000000000
--- a/lib/sql_algebra/sql/select.rb
+++ /dev/null
@@ -1,23 +0,0 @@
-class Select
- attr_reader :attributes, :tables, :predicates
-
- def initialize(*attributes)
- @attributes = attributes
- end
-
- def from(*tables)
- returning self do |select|
- @tables = tables
- end
- end
-
- def where(*predicates)
- returning self do |select|
- @predicates = predicates
- end
- end
-
- def ==(other)
- attributes == other.attributes and tables == other.tables and predicates == other.predicates
- end
-end \ No newline at end of file
diff --git a/spec/relations/table_relation_spec.rb b/spec/relations/table_relation_spec.rb
index dd86f83294..a0647aa541 100644
--- a/spec/relations/table_relation_spec.rb
+++ b/spec/relations/table_relation_spec.rb
@@ -2,6 +2,9 @@ require File.join(File.dirname(__FILE__), '..', 'spec_helper')
describe TableRelation, '#to_sql' do
it "returns a simple SELECT query" do
- TableRelation.new(:users).to_sql.should == Select.new(:*).from(:users)
+ TableRelation.new(:users).to_sql.should == SelectBuilder.new do |s|
+ select :*
+ from :users
+ end
end
end
diff --git a/spec/spec_helper.rb b/spec/spec_helper.rb
index 30c1f65f57..a764fff03e 100644
--- a/spec/spec_helper.rb
+++ b/spec/spec_helper.rb
@@ -1,3 +1,8 @@
require 'rubygems'
require 'spec'
-require File.join(File.dirname(__FILE__), '..', 'lib', 'sql_algebra') \ No newline at end of file
+require File.join(File.dirname(__FILE__), '..', 'lib', 'sql_algebra')
+require File.join(File.dirname(__FILE__), 'spec_helpers', 'be_like')
+
+Spec::Runner.configure do |config|
+ config.include(BeLikeMatcher)
+end \ No newline at end of file
diff --git a/spec/sql/select_spec.rb b/spec/sql/select_spec.rb
deleted file mode 100644
index 7d40a20a5b..0000000000
--- a/spec/sql/select_spec.rb
+++ /dev/null
@@ -1,19 +0,0 @@
-require File.join(File.dirname(__FILE__), '..', 'spec_helper')
-
-describe Select, '==' do
- it "obtains for queries with identical attributes" do
- Select.new(:foo).should == Select.new(:foo)
- Select.new(:bar).should_not == Select.new(:foo)
- end
-
- it "obtains for queries with identical tables" do
- Select.new(:foo).from(:bar).should == Select.new(:foo).from(:bar)
- Select.new(:foo).from(:bar).should_not == Select.new(:foo).from(:foo)
- end
-
- it "obtains for queries with identical predicates" do
- Select.new(:foo).from(:bar).where(:baz).should == Select.new(:foo).from(:bar).where(:baz)
- Select.new(:foo).from(:bar).where(:baz).should_not == Select.new(:foo).from(:bar).where(:foo)
- end
-
-end \ No newline at end of file