folder_pad.rs 1.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546
  1. use crate::synchronizer::{RevisionOperations, RevisionSynchronizer};
  2. use crate::{errors::CollaborateError, synchronizer::RevisionSyncObject};
  3. use lib_ot::core::{DeltaOperationBuilder, DeltaOperations, EmptyAttributes, OperationTransform};
  4. pub type FolderRevisionSynchronizer = RevisionSynchronizer<EmptyAttributes>;
  5. pub type FolderOperations = DeltaOperations<EmptyAttributes>;
  6. pub type FolderOperationsBuilder = DeltaOperationBuilder<EmptyAttributes>;
  7. pub struct ServerFolder {
  8. folder_id: String,
  9. operations: FolderOperations,
  10. }
  11. impl ServerFolder {
  12. pub fn from_operations(folder_id: &str, operations: FolderOperations) -> Self {
  13. Self {
  14. folder_id: folder_id.to_owned(),
  15. operations,
  16. }
  17. }
  18. }
  19. impl RevisionSyncObject<EmptyAttributes> for ServerFolder {
  20. fn object_id(&self) -> &str {
  21. &self.folder_id
  22. }
  23. fn object_json(&self) -> String {
  24. self.operations.json_str()
  25. }
  26. fn compose(&mut self, other: &FolderOperations) -> Result<(), CollaborateError> {
  27. let operations = self.operations.compose(other)?;
  28. self.operations = operations;
  29. Ok(())
  30. }
  31. fn transform(&self, other: &FolderOperations) -> Result<(FolderOperations, FolderOperations), CollaborateError> {
  32. let value = self.operations.transform(other)?;
  33. Ok(value)
  34. }
  35. fn set_operations(&mut self, operations: RevisionOperations<EmptyAttributes>) {
  36. self.operations = operations;
  37. }
  38. }