document_data.rs 1.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071
  1. use collab_document::blocks::{Block, DocumentData, DocumentMeta};
  2. use crate::entities::{BlockPB, ChildrenPB, DocumentDataPB, MetaPB};
  3. impl From<DocumentData> for DocumentDataPB {
  4. fn from(data: DocumentData) -> Self {
  5. let blocks = data
  6. .blocks
  7. .into_iter()
  8. .map(|(id, block)| (id, block.into()))
  9. .collect();
  10. let children_map = data
  11. .meta
  12. .children_map
  13. .into_iter()
  14. .map(|(id, children)| (id, children.into()))
  15. .collect();
  16. let page_id = data.page_id;
  17. Self {
  18. page_id,
  19. blocks,
  20. meta: MetaPB { children_map },
  21. }
  22. }
  23. }
  24. impl From<DocumentDataPB> for DocumentData {
  25. fn from(data: DocumentDataPB) -> Self {
  26. let blocks = data
  27. .blocks
  28. .into_iter()
  29. .map(|(id, block)| (id, block.into()))
  30. .collect();
  31. let children_map = data
  32. .meta
  33. .children_map
  34. .into_iter()
  35. .map(|(id, children)| (id, children.children))
  36. .collect();
  37. let page_id = data.page_id;
  38. DocumentData {
  39. page_id,
  40. blocks,
  41. meta: DocumentMeta { children_map },
  42. }
  43. }
  44. }
  45. impl From<Block> for BlockPB {
  46. fn from(block: Block) -> Self {
  47. Self {
  48. id: block.id,
  49. ty: block.ty,
  50. data: serde_json::to_string(&block.data).unwrap_or_default(),
  51. parent_id: block.parent,
  52. children_id: block.children,
  53. }
  54. }
  55. }
  56. impl From<Vec<String>> for ChildrenPB {
  57. fn from(children: Vec<String>) -> Self {
  58. Self { children }
  59. }
  60. }