grid_params.rs 3.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116
  1. use crate::entities::{
  2. CreateFieldPayload, CreateRowPayload, Field, GridBlockOrder, QueryFieldPayload, QueryGridBlocksPayload,
  3. QueryRowPayload, RepeatedFieldOrder,
  4. };
  5. use crate::parser::NotEmptyUuid;
  6. use flowy_error_code::ErrorCode;
  7. #[derive(Default)]
  8. pub struct CreateRowParams {
  9. pub grid_id: String,
  10. pub start_row_id: Option<String>,
  11. }
  12. impl TryInto<CreateRowParams> for CreateRowPayload {
  13. type Error = ErrorCode;
  14. fn try_into(self) -> Result<CreateRowParams, Self::Error> {
  15. let grid_id = NotEmptyUuid::parse(self.grid_id).map_err(|_| ErrorCode::GridIdIsEmpty)?;
  16. Ok(CreateRowParams {
  17. grid_id: grid_id.0,
  18. start_row_id: self.start_row_id,
  19. })
  20. }
  21. }
  22. #[derive(Default)]
  23. pub struct QueryFieldParams {
  24. pub grid_id: String,
  25. pub field_orders: RepeatedFieldOrder,
  26. }
  27. impl TryInto<QueryFieldParams> for QueryFieldPayload {
  28. type Error = ErrorCode;
  29. fn try_into(self) -> Result<QueryFieldParams, Self::Error> {
  30. let grid_id = NotEmptyUuid::parse(self.grid_id).map_err(|_| ErrorCode::GridIdIsEmpty)?;
  31. Ok(QueryFieldParams {
  32. grid_id: grid_id.0,
  33. field_orders: self.field_orders,
  34. })
  35. }
  36. }
  37. #[derive(Default)]
  38. pub struct QueryGridBlocksParams {
  39. pub grid_id: String,
  40. pub block_orders: Vec<GridBlockOrder>,
  41. }
  42. impl TryInto<QueryGridBlocksParams> for QueryGridBlocksPayload {
  43. type Error = ErrorCode;
  44. fn try_into(self) -> Result<QueryGridBlocksParams, Self::Error> {
  45. let grid_id = NotEmptyUuid::parse(self.grid_id).map_err(|_| ErrorCode::GridIdIsEmpty)?;
  46. Ok(QueryGridBlocksParams {
  47. grid_id: grid_id.0,
  48. block_orders: self.block_orders,
  49. })
  50. }
  51. }
  52. #[derive(Default)]
  53. pub struct QueryRowParams {
  54. pub grid_id: String,
  55. pub block_id: String,
  56. pub row_id: String,
  57. }
  58. impl TryInto<QueryRowParams> for QueryRowPayload {
  59. type Error = ErrorCode;
  60. fn try_into(self) -> Result<QueryRowParams, Self::Error> {
  61. let grid_id = NotEmptyUuid::parse(self.grid_id).map_err(|_| ErrorCode::GridIdIsEmpty)?;
  62. let block_id = NotEmptyUuid::parse(self.block_id).map_err(|_| ErrorCode::BlockIdIsEmpty)?;
  63. let row_id = NotEmptyUuid::parse(self.row_id).map_err(|_| ErrorCode::RowIdIsEmpty)?;
  64. Ok(QueryRowParams {
  65. grid_id: grid_id.0,
  66. block_id: block_id.0,
  67. row_id: row_id.0,
  68. })
  69. }
  70. }
  71. #[derive(Default, Clone)]
  72. pub struct CreateFieldParams {
  73. pub grid_id: String,
  74. pub field: Field,
  75. pub type_option_data: Vec<u8>,
  76. pub start_field_id: Option<String>,
  77. }
  78. impl TryInto<CreateFieldParams> for CreateFieldPayload {
  79. type Error = ErrorCode;
  80. fn try_into(self) -> Result<CreateFieldParams, Self::Error> {
  81. let grid_id = NotEmptyUuid::parse(self.grid_id).map_err(|_| ErrorCode::GridIdIsEmpty)?;
  82. let _ = NotEmptyUuid::parse(self.field.id.clone()).map_err(|_| ErrorCode::FieldIdIsEmpty)?;
  83. let start_field_id = match self.start_field_id {
  84. None => None,
  85. Some(id) => Some(NotEmptyUuid::parse(id).map_err(|_| ErrorCode::FieldIdIsEmpty)?.0),
  86. };
  87. if self.type_option_data.is_empty() {
  88. return Err(ErrorCode::TypeOptionIsEmpty);
  89. }
  90. Ok(CreateFieldParams {
  91. grid_id: grid_id.0,
  92. field: self.field,
  93. type_option_data: self.type_option_data,
  94. start_field_id,
  95. })
  96. }
  97. }