document_data.rs 1.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182
  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 text_map = data.meta.text_map.unwrap_or_default();
  17. let page_id = data.page_id;
  18. Self {
  19. page_id,
  20. blocks,
  21. meta: MetaPB {
  22. children_map,
  23. text_map,
  24. },
  25. }
  26. }
  27. }
  28. impl From<DocumentDataPB> for DocumentData {
  29. fn from(data: DocumentDataPB) -> Self {
  30. let blocks = data
  31. .blocks
  32. .into_iter()
  33. .map(|(id, block)| (id, block.into()))
  34. .collect();
  35. let children_map = data
  36. .meta
  37. .children_map
  38. .into_iter()
  39. .map(|(id, children)| (id, children.children))
  40. .collect();
  41. let text_map = data.meta.text_map;
  42. let page_id = data.page_id;
  43. DocumentData {
  44. page_id,
  45. blocks,
  46. meta: DocumentMeta {
  47. children_map,
  48. text_map: Some(text_map),
  49. },
  50. }
  51. }
  52. }
  53. impl From<Block> for BlockPB {
  54. fn from(block: Block) -> Self {
  55. Self {
  56. id: block.id,
  57. ty: block.ty,
  58. data: serde_json::to_string(&block.data).unwrap_or_default(),
  59. parent_id: block.parent,
  60. children_id: block.children,
  61. external_id: block.external_id,
  62. external_type: block.external_type,
  63. }
  64. }
  65. }
  66. impl From<Vec<String>> for ChildrenPB {
  67. fn from(children: Vec<String>) -> Self {
  68. Self { children }
  69. }
  70. }