lib/dato/local/entities_repo.rb in dato-0.6.18 vs lib/dato/local/entities_repo.rb in dato-0.7.0
- old
+ new
@@ -7,25 +7,39 @@
class EntitiesRepo
attr_reader :entities
def initialize(*payloads)
@entities = {}
-
- payloads.each do |payload|
- EntitiesRepo.payload_entities(payload).each do |entity_payload|
- object = JsonApiEntity.new(entity_payload, self)
- @entities[object.type] ||= {}
- @entities[object.type][object.id] = object
- end
- end
+ upsert_entities(*payloads)
end
def find_entities_of_type(type)
entities.fetch(type, {}).values
end
def find_entity(type, id)
entities.fetch(type, {}).fetch(id, nil)
+ end
+
+ def destroy_entities(type, ids)
+ ids.each do |id|
+ entities.fetch(type, {}).delete(id)
+ end
+ end
+
+ def destroy_item_type(id)
+ entities.fetch('item', {}).delete_if { |_item_id, item| item.item_type.id == id }
+ entities.fetch('item_type', {}).delete(id)
+ end
+
+ def upsert_entities(*payloads)
+ payloads.each do |payload|
+ EntitiesRepo.payload_entities(payload).each do |entity_payload|
+ object = JsonApiEntity.new(entity_payload, self)
+ @entities[object.type] ||= {}
+ @entities[object.type][object.id] = object
+ end
+ end
end
def self.payload_entities(payload)
acc = []