row_entities.rs 1.9 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879
  1. use crate::entities::GridLayout;
  2. use flowy_derive::ProtoBuf;
  3. use flowy_error::ErrorCode;
  4. use flowy_grid_data_model::parser::NotEmptyStr;
  5. #[derive(Debug, Default, Clone, ProtoBuf)]
  6. pub struct RowIdPB {
  7. #[pb(index = 1)]
  8. pub grid_id: String,
  9. #[pb(index = 2)]
  10. pub block_id: String,
  11. #[pb(index = 3)]
  12. pub row_id: String,
  13. }
  14. pub struct RowIdParams {
  15. pub grid_id: String,
  16. pub block_id: String,
  17. pub row_id: String,
  18. }
  19. impl TryInto<RowIdParams> for RowIdPB {
  20. type Error = ErrorCode;
  21. fn try_into(self) -> Result<RowIdParams, Self::Error> {
  22. let grid_id = NotEmptyStr::parse(self.grid_id).map_err(|_| ErrorCode::GridIdIsEmpty)?;
  23. let block_id = NotEmptyStr::parse(self.block_id).map_err(|_| ErrorCode::BlockIdIsEmpty)?;
  24. let row_id = NotEmptyStr::parse(self.row_id).map_err(|_| ErrorCode::RowIdIsEmpty)?;
  25. Ok(RowIdParams {
  26. grid_id: grid_id.0,
  27. block_id: block_id.0,
  28. row_id: row_id.0,
  29. })
  30. }
  31. }
  32. #[derive(Debug, Default, Clone, ProtoBuf)]
  33. pub struct BlockRowIdPB {
  34. #[pb(index = 1)]
  35. pub block_id: String,
  36. #[pb(index = 2)]
  37. pub row_id: String,
  38. }
  39. #[derive(ProtoBuf, Default)]
  40. pub struct CreateTableRowPayloadPB {
  41. #[pb(index = 1)]
  42. pub grid_id: String,
  43. #[pb(index = 2, one_of)]
  44. pub start_row_id: Option<String>,
  45. }
  46. #[derive(Default)]
  47. pub struct CreateRowParams {
  48. pub grid_id: String,
  49. pub start_row_id: Option<String>,
  50. pub group_id: Option<String>,
  51. pub layout: GridLayout,
  52. }
  53. impl TryInto<CreateRowParams> for CreateTableRowPayloadPB {
  54. type Error = ErrorCode;
  55. fn try_into(self) -> Result<CreateRowParams, Self::Error> {
  56. let grid_id = NotEmptyStr::parse(self.grid_id).map_err(|_| ErrorCode::GridIdIsEmpty)?;
  57. Ok(CreateRowParams {
  58. grid_id: grid_id.0,
  59. start_row_id: self.start_row_id,
  60. group_id: None,
  61. layout: GridLayout::Table,
  62. })
  63. }
  64. }