diff options
author | Aaron Patterson <aaron.patterson@gmail.com> | 2010-09-14 15:20:24 -0700 |
---|---|---|
committer | Aaron Patterson <aaron.patterson@gmail.com> | 2010-09-14 15:20:24 -0700 |
commit | 188fc7a46456bd3e5ebdb09ef8a753d7a34a6af5 (patch) | |
tree | 1b6d91afb960704ef79d5e06720c76a2982c9470 /lib | |
parent | 5d11fa9f6a850ac4374a01e402740ca8a7b50f32 (diff) | |
download | rails-188fc7a46456bd3e5ebdb09ef8a753d7a34a6af5.tar.gz rails-188fc7a46456bd3e5ebdb09ef8a753d7a34a6af5.tar.bz2 rails-188fc7a46456bd3e5ebdb09ef8a753d7a34a6af5.zip |
refactoring expressions to a module
Diffstat (limited to 'lib')
-rw-r--r-- | lib/arel.rb | 1 | ||||
-rw-r--r-- | lib/arel/attributes/attribute.rb | 22 | ||||
-rw-r--r-- | lib/arel/expressions.rb | 23 | ||||
-rw-r--r-- | lib/arel/nodes/sql_literal.rb | 12 |
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 |