From 188fc7a46456bd3e5ebdb09ef8a753d7a34a6af5 Mon Sep 17 00:00:00 2001 From: Aaron Patterson Date: Tue, 14 Sep 2010 15:20:24 -0700 Subject: refactoring expressions to a module --- lib/arel/attributes/attribute.rb | 22 ++-------------------- lib/arel/expressions.rb | 23 +++++++++++++++++++++++ lib/arel/nodes/sql_literal.rb | 12 +----------- 3 files changed, 26 insertions(+), 31 deletions(-) create mode 100644 lib/arel/expressions.rb (limited to 'lib/arel') 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 -- cgit v1.2.3