Sha256: 01557b624a7e7f7c3c4793c9ed365a5f144d5f3ce5be09cd50a51335f5191a90
Contents?: true
Size: 1.68 KB
Versions: 1
Compression:
Stored size: 1.68 KB
Contents
module Moneta module Adapters class Sequel # @api private module MySQL def store(key, value, options = {}) @store.call(key: key, value: blob(value)) value end def increment(key, amount = 1, options = {}) @backend.transaction(retry_on: [::Sequel::SerializationFailure]) do @increment.call(key: key, amount: amount) Integer(load(key)) end end def merge!(pairs, options = {}, &block) @backend.transaction do pairs = yield_merge_pairs(pairs, &block) if block_given? @table .on_duplicate_key_update .import([config.key_column, config.value_column], blob_pairs(pairs).to_a) end self end def each_key return super unless block_given? && config.each_key_server && @table.respond_to?(:stream) # Order is not required when streaming @table.server(config.each_key_server).select(config.key_column).paged_each do |row| yield row[config.key_column] end self end protected def prepare_store @store = @table .on_duplicate_key_update .prepare(:insert, statement_id(:store), config.key_column => :$key, config.value_column => :$value) end def prepare_increment @increment = @table .on_duplicate_key_update(config.value_column => ::Sequel.cast(config.value_column, Integer) + :$amount) .prepare(:insert, statement_id(:increment_insert), config.key_column => :$key, config.value_column => :$amount) end end end end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
moneta-1.6.0 | lib/moneta/adapters/sequel/mysql.rb |