purge.txt 727 B

12345678910111213141516171819202122232425262728293031323334353637
  1. Guid Entity.Deleted;
  2. Guid EntityLink.Deleted;
  3. class Deletion : IPersistent { // !! Not IRemotable
  4. Guid ID;
  5. DateTime Date;
  6. UserLink User;
  7. string HeadTable;
  8. string Entity;
  9. }
  10. Provider.Query/Provider.List {
  11. Add (Deleted is NULL) for every query where condition
  12. }
  13. Provider.Delete {
  14. Add to Deletions and get Deletion.ID
  15. Find all deleted entities (head entity and all cascades) and set Deletion.ID for each
  16. }
  17. Provider.Save {
  18. // Do nothing
  19. }
  20. TO BE RESOLVED:
  21. Multi-Delete creates one deletion or many
  22. Purge Delete {
  23. Delete Entity;
  24. for relationship in children {
  25. if relationship == Cascade {
  26. Purge relationship.Child;
  27. } else if relationship == SetNull {
  28. relationship.Child.ID = NULL;
  29. }
  30. }
  31. Purge Deletion;
  32. }