Sha256: 9b21305a21ba98d43a0301ab053c582357a79528e89e294d1bd166598f73b6e7

Contents?: true

Size: 854 Bytes

Versions: 5

Compression:

Stored size: 854 Bytes

Contents

module Eternity
  class Tracker

    Changes = Restruct::NestedHash.new CollectionTracker
    
    extend Forwardable
    def_delegators :changes, :[], :to_h, :empty?, :destroy

    attr_reader :repository

    def initialize(repository)
      @repository = repository
      @changes = Changes.new redis: Eternity.redis, 
                             id: repository.id[:changes]
    end

    def count
      changes.inject(0) do |sum, (collection, tracker)|
        sum + tracker.count
      end
    end

    alias_method :revert, :destroy
    alias_method :clear, :destroy

    def flatten
      changes.each_with_object({}) do |(collection, tracker), hash|
        collection_changes = tracker.flatten
        hash[collection] = collection_changes unless collection_changes.empty?
      end
    end

    private

    attr_reader :changes
    
  end
end

Version data entries

5 entries across 5 versions & 1 rubygems

Version Path
eternity-0.0.5 lib/eternity/tracker.rb
eternity-0.0.4 lib/eternity/tracker.rb
eternity-0.0.3 lib/eternity/tracker.rb
eternity-0.0.2 lib/eternity/tracker.rb
eternity-0.0.1 lib/eternity/tracker.rb