alf-tool/alf-sql

View on GitHub
lib/alf/predicate/nodes/in.rb

Summary

Maintainability
A
25 mins
Test Coverage
module Alf
  class Predicate
    module In

      def subquery?
        Sql::Expr === last
      end

      def subquery
        subquery? ? last : nil
      end

      def to_sql(buffer = "")
        identifier.to_sql(buffer)
        buffer << Sql::Expr::SPACE << Sql::Expr::IN << Sql::Expr::SPACE
        if subquery?
          values.to_sql(buffer)
        else
          buffer << Sql::Expr::LEFT_PARENTHESE
          values.each_with_index do |val,index|
            buffer << Sql::Expr::COMMA << Sql::Expr::SPACE unless index==0
            to_sql_literal(buffer, val)
          end
          buffer << Sql::Expr::RIGHT_PARENTHESE
        end
        buffer
      end

    end
  end
end