lib/ecoportal/api/common/base_model.rb in ecoportal-api-0.5.8 vs lib/ecoportal/api/common/base_model.rb in ecoportal-api-0.6.0
- old
+ new
@@ -46,10 +46,11 @@
@_parent = parent
@_key = key
if !_parent || !_key
@doc = doc
@original_doc = JSON.parse(@doc.to_json)
+ @initial_doc = JSON.parse(@doc.to_json)
end
end
def doc
raise UnlinkedModel.new unless linked?
@@ -61,21 +62,28 @@
raise UnlinkedModel.new unless linked?
return @original_doc if is_root?
_parent.original_doc.dig(*[_key].flatten)
end
+ def initial_doc
+ raise UnlinkedModel.new unless linked?
+ return @initial_doc if is_root?
+ _parent.initial_doc.dig(*[_key].flatten)
+ end
+
def as_json
doc
end
def to_json(*args)
doc.to_json(*args)
end
- def as_update
+ def as_update(ref = :last)
new_doc = as_json
- Common::HashDiff.diff(new_doc, original_doc)
+ ref_doc = ref == :total ? initial_doc : original_doc
+ Common::HashDiff.diff(new_doc, ref_doc)
end
def dirty?
as_update != {}
end
@@ -98,10 +106,10 @@
else
dig_set(_parent.doc, [_key].flatten, new_doc)
end
end
- def print
+ def pretty_print
puts JSON.pretty_generate(as_json)
self
end
protected