Sha256: e7041f96923fe4b7b336e068c4a8049e8cad32b7bdae42b6be42f5a5ccc7ee44

Contents?: true

Size: 1.08 KB

Versions: 4

Compression:

Stored size: 1.08 KB

Contents

class Upsert
  class ColumnDefinition
    # @private
    class Sqlite3 < ColumnDefinition
      class << self
        def all(connection, quoted_table_name)
          # activerecord-3.2.13/lib/active_record/connection_adapters/sqlite_adapter.rb
          connection.execute("PRAGMA table_info(#{quoted_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

4 entries across 4 versions & 1 rubygems

Version Path
upsert-2.9.10-java lib/upsert/column_definition/sqlite3.rb
upsert-2.9.10 lib/upsert/column_definition/sqlite3.rb
upsert-2.9.9-universal-java-11 lib/upsert/column_definition/sqlite3.rb
upsert-2.9.9 lib/upsert/column_definition/sqlite3.rb