Sha256: edc00a8685666dde622cee32714c0bf68e1f721ec9f45ff0f8c759822fc8cfb1

Contents?: true

Size: 1018 Bytes

Versions: 2

Compression:

Stored size: 1018 Bytes

Contents

class Upsert
  class Buffer
    # @private
    class SQLite3_Database < Buffer
      include Quoter

      def chunk
        return if rows.empty?
        row = rows.shift
        %{INSERT OR IGNORE INTO "#{table_name}" (#{row.columns_sql}) VALUES (#{row.values_sql});UPDATE "#{table_name}" SET #{row.set_sql} WHERE #{row.where_sql}}
      end

      def execute(sql)
        connection.execute_batch sql
      end

      def quote_string(v)
        SINGLE_QUOTE + SQLite3::Database.quote(v) + SINGLE_QUOTE
      end

      def quote_binary(v)
        X_AND_SINGLE_QUOTE + v.unpack("H*")[0] + SINGLE_QUOTE
      end

      def quote_time(v)
        quote_string [v.strftime(ISO8601_DATETIME), sprintf(USEC_SPRINTF, v.usec)].join('.')
      end
      
      def quote_ident(k)
        DOUBLE_QUOTE + SQLite3::Database.quote(k.to_s) + DOUBLE_QUOTE
      end

      def quote_boolean(v)
        s = v ? 't' : 'f'
        quote_string s
      end

      def quote_big_decimal(v)
        v.to_f
      end
    end
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
upsert-0.1.2 lib/upsert/buffer/sqlite3_database.rb
upsert-0.1.1 lib/upsert/buffer/sqlite3_database.rb