aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAaron Patterson <aaron.patterson@gmail.com>2010-09-14 15:20:24 -0700
committerAaron Patterson <aaron.patterson@gmail.com>2010-09-14 15:20:24 -0700
commit188fc7a46456bd3e5ebdb09ef8a753d7a34a6af5 (patch)
tree1b6d91afb960704ef79d5e06720c76a2982c9470
parent5d11fa9f6a850ac4374a01e402740ca8a7b50f32 (diff)
downloadrails-188fc7a46456bd3e5ebdb09ef8a753d7a34a6af5.tar.gz
rails-188fc7a46456bd3e5ebdb09ef8a753d7a34a6af5.tar.bz2
rails-188fc7a46456bd3e5ebdb09ef8a753d7a34a6af5.zip
refactoring expressions to a module
-rw-r--r--lib/arel.rb1
-rw-r--r--lib/arel/attributes/attribute.rb22
-rw-r--r--lib/arel/expressions.rb23
-rw-r--r--lib/arel/nodes/sql_literal.rb12
4 files changed, 27 insertions, 31 deletions
diff --git a/lib/arel.rb b/lib/arel.rb
index d1c2e44567..989ed12c87 100644
--- a/lib/arel.rb
+++ b/lib/arel.rb
@@ -1,6 +1,7 @@
require 'arel/crud'
require 'arel/version'
+require 'arel/expressions'
require 'arel/table'
require 'arel/attributes'
require 'arel/compatibility/wheres'
diff --git a/lib/arel/attributes/attribute.rb b/lib/arel/attributes/attribute.rb
index 34c1f45ba6..28493d5cba 100644
--- a/lib/arel/attributes/attribute.rb
+++ b/lib/arel/attributes/attribute.rb
@@ -1,6 +1,8 @@
module Arel
module Attributes
class Attribute < Struct.new :relation, :name, :column
+ include Arel::Expressions
+
def not_eq other
Nodes::NotEqual.new self, other
end
@@ -13,26 +15,6 @@ module Arel
Nodes::In.new self, other
end
- def count distinct = false
- Nodes::Count.new [self], distinct
- end
-
- def sum
- Nodes::Sum.new [self], Nodes::SqlLiteral.new('sum_id')
- end
-
- def maximum
- Nodes::Max.new [self], Nodes::SqlLiteral.new('max_id')
- end
-
- def minimum
- Nodes::Min.new [self], Nodes::SqlLiteral.new('min_id')
- end
-
- def average
- Nodes::Avg.new [self], Nodes::SqlLiteral.new('avg_id')
- end
-
def gteq right
Nodes::GreaterThanOrEqual.new self, right
end
diff --git a/lib/arel/expressions.rb b/lib/arel/expressions.rb
new file mode 100644
index 0000000000..d1fbfd83d9
--- /dev/null
+++ b/lib/arel/expressions.rb
@@ -0,0 +1,23 @@
+module Arel
+ module Expressions
+ def count distinct = false
+ Nodes::Count.new [self], distinct
+ end
+
+ def sum
+ Nodes::Sum.new [self], Nodes::SqlLiteral.new('sum_id')
+ end
+
+ def maximum
+ Nodes::Max.new [self], Nodes::SqlLiteral.new('max_id')
+ end
+
+ def minimum
+ Nodes::Min.new [self], Nodes::SqlLiteral.new('min_id')
+ end
+
+ def average
+ Nodes::Avg.new [self], Nodes::SqlLiteral.new('avg_id')
+ end
+ end
+end
diff --git a/lib/arel/nodes/sql_literal.rb b/lib/arel/nodes/sql_literal.rb
index 7299fb1d45..e5918620d9 100644
--- a/lib/arel/nodes/sql_literal.rb
+++ b/lib/arel/nodes/sql_literal.rb
@@ -1,17 +1,7 @@
module Arel
module Nodes
class SqlLiteral < String
- def count distinct = false
- Count.new [self], distinct
- end
-
- def sum
- Nodes::Sum.new [self], Nodes::SqlLiteral.new('sum_id')
- end
-
- def maximum
- Nodes::Max.new [self], Nodes::SqlLiteral.new('max_id')
- end
+ include Arel::Expressions
end
end
end