From 7032a50297fce4d7724d1735e81e5df5fd919e71 Mon Sep 17 00:00:00 2001 From: Bryan Helmkamp Date: Sun, 17 May 2009 14:31:04 -0400 Subject: reorganized file structures Conflicts: lib/arel.rb lib/arel/arel.rb lib/arel/engines/memory/predicates.rb lib/arel/engines/memory/relations/array.rb lib/arel/engines/sql/relations/table.rb --- lib/arel/engines/array/array.rb | 1 - lib/arel/engines/array/relations/array.rb | 19 ------- lib/arel/engines/memory.rb | 4 ++ lib/arel/engines/memory/engine.rb | 12 +++++ lib/arel/engines/memory/predicates.rb | 58 ++++++++++++++++++++++ lib/arel/engines/memory/primitives.rb | 2 + lib/arel/engines/memory/primitives/attribute.rb | 7 +++ lib/arel/engines/memory/primitives/value.rb | 7 +++ lib/arel/engines/memory/relations.rb | 2 + lib/arel/engines/memory/relations/array.rb | 21 ++++++++ .../engines/memory/relations/operations/where.rb | 7 +++ lib/arel/engines/sql.rb | 7 +++ lib/arel/engines/sql/primitives/attribute.rb | 2 - lib/arel/engines/sql/relations.rb | 13 +++-- lib/arel/engines/sql/relations/operations.rb | 2 - lib/arel/engines/sql/relations/table.rb | 5 ++ lib/arel/engines/sql/relations/utilities.rb | 3 -- lib/arel/engines/sql/relations/writes.rb | 3 -- lib/arel/engines/sql/sql.rb | 7 --- 19 files changed, 141 insertions(+), 41 deletions(-) delete mode 100644 lib/arel/engines/array/array.rb delete mode 100644 lib/arel/engines/array/relations/array.rb create mode 100644 lib/arel/engines/memory.rb create mode 100644 lib/arel/engines/memory/engine.rb create mode 100644 lib/arel/engines/memory/predicates.rb create mode 100644 lib/arel/engines/memory/primitives.rb create mode 100644 lib/arel/engines/memory/primitives/attribute.rb create mode 100644 lib/arel/engines/memory/primitives/value.rb create mode 100644 lib/arel/engines/memory/relations.rb create mode 100644 lib/arel/engines/memory/relations/array.rb create mode 100644 lib/arel/engines/memory/relations/operations/where.rb create mode 100644 lib/arel/engines/sql.rb delete mode 100644 lib/arel/engines/sql/relations/operations.rb delete mode 100644 lib/arel/engines/sql/relations/utilities.rb delete mode 100644 lib/arel/engines/sql/relations/writes.rb delete mode 100644 lib/arel/engines/sql/sql.rb (limited to 'lib/arel/engines') diff --git a/lib/arel/engines/array/array.rb b/lib/arel/engines/array/array.rb deleted file mode 100644 index 3a3a47308a..0000000000 --- a/lib/arel/engines/array/array.rb +++ /dev/null @@ -1 +0,0 @@ -require 'arel/engines/array/relations/array' \ No newline at end of file diff --git a/lib/arel/engines/array/relations/array.rb b/lib/arel/engines/array/relations/array.rb deleted file mode 100644 index dac65abbc2..0000000000 --- a/lib/arel/engines/array/relations/array.rb +++ /dev/null @@ -1,19 +0,0 @@ -module Arel - class Array < Relation - include Recursion::BaseCase - - def initialize(array, attribute_names) - @array, @attribute_names = array, attribute_names - end - - def attributes - @attributes ||= @attribute_names.collect do |name| - Attribute.new(self, name.to_sym) - end - end - - def call(connection = nil) - @array.collect { |row| attributes.zip(row).to_hash } - end - end -end \ No newline at end of file diff --git a/lib/arel/engines/memory.rb b/lib/arel/engines/memory.rb new file mode 100644 index 0000000000..df6f6f3d48 --- /dev/null +++ b/lib/arel/engines/memory.rb @@ -0,0 +1,4 @@ +require 'arel/engines/memory/relations' +require 'arel/engines/memory/primitives' +require 'arel/engines/memory/engine' +require 'arel/engines/memory/predicates' \ No newline at end of file diff --git a/lib/arel/engines/memory/engine.rb b/lib/arel/engines/memory/engine.rb new file mode 100644 index 0000000000..67a084f2cd --- /dev/null +++ b/lib/arel/engines/memory/engine.rb @@ -0,0 +1,12 @@ +module Arel + module Memory + class Engine + module CRUD + def read(relation) + relation.eval + end + end + include CRUD + end + end +end \ No newline at end of file diff --git a/lib/arel/engines/memory/predicates.rb b/lib/arel/engines/memory/predicates.rb new file mode 100644 index 0000000000..3522ea3ffa --- /dev/null +++ b/lib/arel/engines/memory/predicates.rb @@ -0,0 +1,58 @@ +module Arel + class Predicate + def or(other_predicate) + Or.new(self, other_predicate) + end + + def and(other_predicate) + And.new(self, other_predicate) + end + end + + class Binary < Predicate + def eval(row) + operand1.eval(row).send(operator, operand2.eval(row)) + end + end + + class CompoundPredicate < Binary + def to_sql(formatter = nil) + "(#{operand1.to_sql(formatter)} #{predicate_sql} #{operand2.to_sql(formatter)})" + end + end + + class Or < CompoundPredicate + def predicate_sql; "OR" end + end + + class And < CompoundPredicate + def predicate_sql; "AND" end + end + + class Equality < Binary + def ==(other) + Equality === other and + ((operand1 == other.operand1 and operand2 == other.operand2) or + (operand1 == other.operand2 and operand2 == other.operand1)) + end + end + + class GreaterThanOrEqualTo < Binary + end + + class GreaterThan < Binary + end + + class LessThanOrEqualTo < Binary + end + + class LessThan < Binary + def operator; :< end + end + + class Match < Binary + end + + class In < Binary + end +end diff --git a/lib/arel/engines/memory/primitives.rb b/lib/arel/engines/memory/primitives.rb new file mode 100644 index 0000000000..4d5c76e956 --- /dev/null +++ b/lib/arel/engines/memory/primitives.rb @@ -0,0 +1,2 @@ +require 'arel/engines/memory/primitives/attribute' +require 'arel/engines/memory/primitives/value' diff --git a/lib/arel/engines/memory/primitives/attribute.rb b/lib/arel/engines/memory/primitives/attribute.rb new file mode 100644 index 0000000000..9864feadc2 --- /dev/null +++ b/lib/arel/engines/memory/primitives/attribute.rb @@ -0,0 +1,7 @@ +module Arel + class Attribute + def eval(row) + row[self] + end + end +end \ No newline at end of file diff --git a/lib/arel/engines/memory/primitives/value.rb b/lib/arel/engines/memory/primitives/value.rb new file mode 100644 index 0000000000..b83cd02e57 --- /dev/null +++ b/lib/arel/engines/memory/primitives/value.rb @@ -0,0 +1,7 @@ +module Arel + class Value + def eval(row) + value + end + end +end \ No newline at end of file diff --git a/lib/arel/engines/memory/relations.rb b/lib/arel/engines/memory/relations.rb new file mode 100644 index 0000000000..6361d7c9d7 --- /dev/null +++ b/lib/arel/engines/memory/relations.rb @@ -0,0 +1,2 @@ +require 'arel/engines/memory/relations/array' +require 'arel/engines/memory/relations/operations/where' diff --git a/lib/arel/engines/memory/relations/array.rb b/lib/arel/engines/memory/relations/array.rb new file mode 100644 index 0000000000..c02c62891b --- /dev/null +++ b/lib/arel/engines/memory/relations/array.rb @@ -0,0 +1,21 @@ +module Arel + class Array < Relation + attributes :array, :attribute_names + deriving :initialize + include Recursion::BaseCase + + def engine + @engine ||= Memory::Engine.new + end + + def attributes + @attributes ||= @attribute_names.collect do |name| + Attribute.new(self, name.to_sym) + end + end + + def eval + @array.collect { |row| attributes.zip(row).to_hash } + end + end +end \ No newline at end of file diff --git a/lib/arel/engines/memory/relations/operations/where.rb b/lib/arel/engines/memory/relations/operations/where.rb new file mode 100644 index 0000000000..eb11fb55fd --- /dev/null +++ b/lib/arel/engines/memory/relations/operations/where.rb @@ -0,0 +1,7 @@ +module Arel + class Where < Compound + def eval + relation.eval.select { |row| predicate.eval(row) } + end + end +end \ No newline at end of file diff --git a/lib/arel/engines/sql.rb b/lib/arel/engines/sql.rb new file mode 100644 index 0000000000..aed1fd861e --- /dev/null +++ b/lib/arel/engines/sql.rb @@ -0,0 +1,7 @@ +require 'arel/engines/sql/engine' +require 'arel/engines/sql/relations' +require 'arel/engines/sql/primitives' +require 'arel/engines/sql/predicates' +require 'arel/engines/sql/formatters' +require 'arel/engines/sql/extensions' +require 'arel/engines/sql/christener' \ No newline at end of file diff --git a/lib/arel/engines/sql/primitives/attribute.rb b/lib/arel/engines/sql/primitives/attribute.rb index 48de690b6f..ad78a9ec5b 100644 --- a/lib/arel/engines/sql/primitives/attribute.rb +++ b/lib/arel/engines/sql/primitives/attribute.rb @@ -1,5 +1,3 @@ -require 'set' - module Arel class Attribute def column diff --git a/lib/arel/engines/sql/relations.rb b/lib/arel/engines/sql/relations.rb index 4de01b2691..39ef8852a1 100644 --- a/lib/arel/engines/sql/relations.rb +++ b/lib/arel/engines/sql/relations.rb @@ -1,5 +1,10 @@ -require 'arel/engines/sql/relations/utilities' +require 'arel/engines/sql/relations/utilities/recursion' +require 'arel/engines/sql/relations/utilities/externalization' +require 'arel/engines/sql/relations/utilities/nil' require 'arel/engines/sql/relations/relation' -require 'arel/engines/sql/relations/operations' -require 'arel/engines/sql/relations/writes' -require 'arel/engines/sql/relations/table' \ No newline at end of file +require 'arel/engines/sql/relations/table' +require 'arel/engines/sql/relations/operations/join' +require 'arel/engines/sql/relations/operations/alias' +require 'arel/engines/sql/relations/writes/delete' +require 'arel/engines/sql/relations/writes/insert' +require 'arel/engines/sql/relations/writes/update' \ No newline at end of file diff --git a/lib/arel/engines/sql/relations/operations.rb b/lib/arel/engines/sql/relations/operations.rb deleted file mode 100644 index ff33fc6bc3..0000000000 --- a/lib/arel/engines/sql/relations/operations.rb +++ /dev/null @@ -1,2 +0,0 @@ -require 'arel/engines/sql/relations/operations/alias' -require 'arel/engines/sql/relations/operations/join' diff --git a/lib/arel/engines/sql/relations/table.rb b/lib/arel/engines/sql/relations/table.rb index 0433abbbb2..2653744149 100644 --- a/lib/arel/engines/sql/relations/table.rb +++ b/lib/arel/engines/sql/relations/table.rb @@ -34,3 +34,8 @@ module Arel end end end + +def Table(name, engine = Arel::Table.engine) + Arel::Table.new(name, engine) +end + diff --git a/lib/arel/engines/sql/relations/utilities.rb b/lib/arel/engines/sql/relations/utilities.rb deleted file mode 100644 index a1451ed448..0000000000 --- a/lib/arel/engines/sql/relations/utilities.rb +++ /dev/null @@ -1,3 +0,0 @@ -require 'arel/engines/sql/relations/utilities/recursion' -require 'arel/engines/sql/relations/utilities/externalization' -require 'arel/engines/sql/relations/utilities/nil' diff --git a/lib/arel/engines/sql/relations/writes.rb b/lib/arel/engines/sql/relations/writes.rb deleted file mode 100644 index dcadc326d9..0000000000 --- a/lib/arel/engines/sql/relations/writes.rb +++ /dev/null @@ -1,3 +0,0 @@ -require 'arel/engines/sql/relations/writes/delete' -require 'arel/engines/sql/relations/writes/insert' -require 'arel/engines/sql/relations/writes/update' diff --git a/lib/arel/engines/sql/sql.rb b/lib/arel/engines/sql/sql.rb deleted file mode 100644 index aed1fd861e..0000000000 --- a/lib/arel/engines/sql/sql.rb +++ /dev/null @@ -1,7 +0,0 @@ -require 'arel/engines/sql/engine' -require 'arel/engines/sql/relations' -require 'arel/engines/sql/primitives' -require 'arel/engines/sql/predicates' -require 'arel/engines/sql/formatters' -require 'arel/engines/sql/extensions' -require 'arel/engines/sql/christener' \ No newline at end of file -- cgit v1.2.3