diff --git a/lib/arel.rb b/lib/arel.rb index d1c2e44567bab3d48615c4118769b438e2e704e6..989ed12c8726a6ef7b56fc93819758e8c48884dc 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 34c1f45ba667750d11ba74be667f2f1fb6a82c3e..28493d5cba8b0ebb5077e1771a10db5d7822c5d6 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 @@ def in other 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 0000000000000000000000000000000000000000..d1fbfd83d90d94249ffb1ba146b3f4e12d2aa374 --- /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 7299fb1d45d313b204a84e004d7aa29c12c6e9d6..e5918620d93f92ba786aeeb95e2fe1b0350d112e 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