Sha256: 9766b92fef7ccbd2977cbd083d9120b12db74eac411be58e1413eb9d0dd68029

Contents?: true

Size: 746 Bytes

Versions: 1

Compression:

Stored size: 746 Bytes

Contents

# frozen_string_literal: true

module TableSaw
  module Queries
    class SerializeSqlInClause
      attr_reader :table_name, :column, :values

      def initialize(table_name, column, values)
        @table_name = table_name
        @column = column
        @values = values
      end

      def call
        "#{column} in (#{serialized_values.join(', ')})"
      end

      private

      def db_column
        @db_column ||= connection.columns(table_name).find { |c| c.name == column }
      end

      def serialized_values
        values.map do |value|
          connection.quote(connection.type_cast_from_column(db_column, value))
        end
      end

      def connection
        TableSaw::Connection.adapter
      end
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
table_saw-2.2.0 lib/table_saw/queries/serialize_sql_in_clause.rb