Sha256: 6910a24d213cfff9997e8154645a17ae4597f4e07af73a78a70ff0e7afec7480
Contents?: true
Size: 1.3 KB
Versions: 3
Compression:
Stored size: 1.3 KB
Contents
module Jamnagar module Storage class ContributorStore < BasicStore def initialize(adapter=nil) @adapter = adapter || {} end def find_contributor(item, contributor) existing = find_and_update_contributor(item, contributor) existing = create_contributor(item, contributor) unless existing existing end private def find_and_update_contributor(item, contributor) existing = @adapter.find_first({"_id" => contributor["id"]}) update_contributions(existing, item) if existing existing end def create_contributor(item, contributor) contributions = [item["_id"]] created = @adapter.store(contributor["id"], contributor.merge({"_id" => contributor["id"], "contributions" => contributions, "contributions_count" => 1})) @adapter.find_first({"_id" => created}) end def update_contributions(contributor, item) return unless contributor && contributor["contributions"] && item && item["_id"] existing_contributions = contributor["contributions"] || [] contributions = existing_contributions << item["_id"] @adapter.update({"_id" => contributor["_id"]}, "$set" => {"contributions" => contributions}, "$inc" => {"contributions_count" => 1}) end end end end
Version data entries
3 entries across 3 versions & 1 rubygems
Version | Path |
---|---|
jamnagar-1.3.9.1 | lib/jamnagar/storage/contributor_store.rb |
jamnagar-1.3.9 | lib/jamnagar/storage/contributor_store.rb |
jamnagar-1.3.8 | lib/jamnagar/storage/contributor_store.rb |