Class: Terrestrial::DirtyMap

Inherits:
Object
  • Object
show all
Defined in:
lib/terrestrial/dirty_map.rb

Instance Method Summary collapse

Constructor Details

#initialize(storage) ⇒ DirtyMap

Returns a new instance of DirtyMap.



3
4
5
# File 'lib/terrestrial/dirty_map.rb', line 3

def initialize(storage)
  @storage = storage
end

Instance Method Details

#dirty?(record) ⇒ Boolean

Returns:

  • (Boolean)


20
21
22
# File 'lib/terrestrial/dirty_map.rb', line 20

def dirty?(record)
  !same_as_loaded?(record) || deleted?(record)
end

#load(record) ⇒ Object



15
16
17
18
# File 'lib/terrestrial/dirty_map.rb', line 15

def load(record)
  storage.store(hash_key(record), record.deep_clone)
  record
end

#load_if_new(record) ⇒ Object



10
11
12
13
# File 'lib/terrestrial/dirty_map.rb', line 10

def load_if_new(record)
  storage.fetch(hash_key(record)) { self.load(record) }
  record
end

#reject_unchanged_fields(record) ⇒ Object



24
25
26
27
28
29
30
# File 'lib/terrestrial/dirty_map.rb', line 24

def reject_unchanged_fields(record)
  record_as_loaded = storage.fetch(hash_key(record), {})

  record.reject { |field, value|
    value == record_as_loaded.fetch(field, NotFound)
  }
end