diff options
Diffstat (limited to 'lib/arel/engines/sql/engine.rb')
-rw-r--r-- | lib/arel/engines/sql/engine.rb | 37 |
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 |