Blob of lib/strokedb/document/delete.rb (raw blob data)

1 module StrokeDB
2
3 class DocumentDeletionError < StandardError
4 end
5
6 DeletedDocument = Meta.new do
7 on_load do |doc|
8 doc.make_immutable!
9 end
10
11 def undelete!
12 deleted_version = versions.previous
13 store.save_as_head!(deleted_version)
14 store.find(uuid)
15 end
16 end
17
18 class Document
19
20 def delete!
21 raise DocumentDeletionError, "can't delete non-head document" unless head?
22 metas << DeletedDocument
23 save!
24 make_immutable!
25 end
26
27 end
28 end