aboutsummaryrefslogtreecommitdiffstats
path: root/lib/arel/engines/sql/engine.rb
diff options
context:
space:
mode:
Diffstat (limited to 'lib/arel/engines/sql/engine.rb')
-rw-r--r--lib/arel/engines/sql/engine.rb37
1 files changed, 37 insertions, 0 deletions
diff --git a/lib/arel/engines/sql/engine.rb b/lib/arel/engines/sql/engine.rb
new file mode 100644
index 0000000000..7d2926040c
--- /dev/null
+++ b/lib/arel/engines/sql/engine.rb
@@ -0,0 +1,37 @@
+module Arel
+ module Sql
+ class Engine
+ def initialize(ar = nil)
+ @ar = ar
+ end
+
+ def connection
+ @ar.connection
+ end
+
+ def method_missing(method, *args, &block)
+ @ar.connection.send(method, *args, &block)
+ end
+
+ module CRUD
+ def create(relation)
+ connection.insert(relation.to_sql)
+ end
+
+ def read(relation)
+ rows = connection.select_rows(relation.to_sql)
+ Array.new(rows, relation.attributes)
+ end
+
+ def update(relation)
+ connection.update(relation.to_sql)
+ end
+
+ def delete(relation)
+ connection.delete(relation.to_sql)
+ end
+ end
+ include CRUD
+ end
+ end
+end