Sha256: 202e54c347a87605414a715a0460306776c941d7c635fefa913cfed2f5a55b7a

Contents?: true

Size: 734 Bytes

Versions: 9

Compression:

Stored size: 734 Bytes

Contents

module Arel
  module Middleware
    class ToSqlMiddleware
      attr_reader :sql, :type, :query_class

      def initialize(type)
        @sql = []
        @type = type
        @query_class = class_from_type
      end

      def call(next_arel, next_middleware)
        sql << next_arel.to_sql unless next_arel.query(class: query_class).empty?
        next_middleware.call(next_arel)
      end

      private

      def class_from_type
        case type
        when :insert
          Arel::Nodes::InsertStatement
        when :select
          Arel::Nodes::SelectStatement
        when :update
          Arel::Nodes::UpdateStatement
        when :delete
          Arel::Nodes::DeleteStatement
        end
      end
    end
  end
end

Version data entries

9 entries across 9 versions & 1 rubygems

Version Path
arel_toolkit-0.4.9 lib/arel/middleware/to_sql_middleware.rb
arel_toolkit-0.4.8 lib/arel/middleware/to_sql_middleware.rb
arel_toolkit-0.4.7 lib/arel/middleware/to_sql_middleware.rb
arel_toolkit-0.4.6 lib/arel/middleware/to_sql_middleware.rb
arel_toolkit-0.4.5 lib/arel/middleware/to_sql_middleware.rb
arel_toolkit-0.4.4 lib/arel/middleware/to_sql_middleware.rb
arel_toolkit-0.4.3 lib/arel/middleware/to_sql_middleware.rb
arel_toolkit-0.4.2 lib/arel/middleware/to_sql_middleware.rb
arel_toolkit-0.4.1 lib/arel/middleware/to_sql_middleware.rb