Sha256: ac871e8f1591e1231c2a5ee82a355b5f4373dd29a1b9e14193a3d11557fa40c1
Contents?: true
Size: 1.11 KB
Versions: 1
Compression:
Stored size: 1.11 KB
Contents
require 'rom/fmp/commands' #require 'rom/fmp/commands/transaction' module ROM module FMP module Commands class Update < ROM::Commands::Update #include Transaction option :original, type: Hash, reader: true alias_method :to, :call def execute(tuple) attributes = input[tuple] validator.call(attributes) changed = diff(attributes.to_h) if changed.any? update(changed) else [] end end def change(original) self.class.new(relation, options.merge(original: original)) end def update(tuple) pks = relation.map { |t| t[primary_key] } dataset = relation.dataset dataset.update(tuple) dataset.unfiltered.where(primary_key => pks).to_a end def primary_key relation.primary_key end private def diff(tuple) if original Hash[tuple.to_a - (tuple.to_a & original.to_a)] else tuple end end end end end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
rom-fmp-0.0.4 | lib/rom/fmp/commands/update.rb |