summaryrefslogtreecommitdiffstats
path: root/lib/puppet/util/rails/collection_merger.rb
blob: 3a28bb30456441b35a83777c9b41f4ec276a8c93 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
module Puppet::Util::CollectionMerger
    def ar_hash_merge(db_hash, mem_hash, args)
        (db_hash.keys | mem_hash.keys).each do |key|
            if (db_hash[key] && mem_hash[key])
                # in both, update value
                args[:modify].call(db_hash[key], mem_hash[key])
            elsif (db_hash[key])
                # in db, not memory, delete from database
                args[:delete].call(db_hash[key])
            else
                # in mem, not in db, insert into the database
                args[:create].call(key, mem_hash[key])
            end
        end
    end
end