Sha256: 00eb706be222f99bbf3324878a6e910ec4eec58e21a1145cf91dbec2c210a281

Contents?: true

Size: 1.1 KB

Versions: 1

Compression:

Stored size: 1.1 KB

Contents

class Upsert
  class ColumnDefinition
    # @private
    class Sqlite3 < ColumnDefinition
      class << self
        def all(connection, table_name)
          # activerecord-3.2.13/lib/active_record/connection_adapters/sqlite_adapter.rb
          connection.execute("PRAGMA table_info(#{connection.quote_ident(table_name)})").map do |row|#, 'SCHEMA').to_hash
            if connection.metal.respond_to?(:results_as_hash) and not connection.metal.results_as_hash
              row = {'name' => row[1], 'type' => row[2], 'dflt_value' => row[4]}
            end
            default = case row["dflt_value"]
            when /^null$/i
              nil
            when /^'(.*)'$/
              $1.gsub(/''/, "'")
            when /^"(.*)"$/
              $1.gsub(/""/, '"')
            else
              row["dflt_value"]
            end
            new connection, row['name'], row['type'], default
          end.sort_by do |cd|
            cd.name
          end
        end
      end
      
      def equality(left, right)
        "#{left} IS #{right} OR (#{left} IS NULL AND #{right} IS NULL)"
      end
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
upsert-2.0.2 lib/upsert/column_definition/sqlite3.rb