default_controller.rs 2.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182
  1. use crate::entities::{GroupChangesetPB, GroupViewChangesetPB, RowPB};
  2. use crate::services::group::{Group, GroupController, GroupControllerSharedOperation, MoveGroupRowContext};
  3. use flowy_error::FlowyResult;
  4. use flowy_grid_data_model::revision::{FieldRevision, RowRevision};
  5. use std::sync::Arc;
  6. pub struct DefaultGroupController {
  7. pub field_id: String,
  8. pub group: Group,
  9. }
  10. const DEFAULT_GROUP_CONTROLLER: &str = "DefaultGroupController";
  11. impl DefaultGroupController {
  12. pub fn new(field_rev: &Arc<FieldRevision>) -> Self {
  13. let group = Group::new(
  14. DEFAULT_GROUP_CONTROLLER.to_owned(),
  15. field_rev.id.clone(),
  16. "".to_owned(),
  17. "".to_owned(),
  18. );
  19. Self {
  20. field_id: field_rev.id.clone(),
  21. group,
  22. }
  23. }
  24. }
  25. impl GroupControllerSharedOperation for DefaultGroupController {
  26. fn field_id(&self) -> &str {
  27. &self.field_id
  28. }
  29. fn groups(&self) -> Vec<Group> {
  30. vec![self.group.clone()]
  31. }
  32. fn get_group(&self, _group_id: &str) -> Option<(usize, Group)> {
  33. Some((0, self.group.clone()))
  34. }
  35. fn fill_groups(&mut self, row_revs: &[Arc<RowRevision>], _field_rev: &FieldRevision) -> FlowyResult<()> {
  36. row_revs.iter().for_each(|row_rev| {
  37. self.group.add_row(RowPB::from(row_rev));
  38. });
  39. Ok(())
  40. }
  41. fn move_group(&mut self, _from_group_id: &str, _to_group_id: &str) -> FlowyResult<()> {
  42. Ok(())
  43. }
  44. fn did_update_row(
  45. &mut self,
  46. _row_rev: &RowRevision,
  47. _field_rev: &FieldRevision,
  48. ) -> FlowyResult<Vec<GroupChangesetPB>> {
  49. Ok(vec![])
  50. }
  51. fn did_delete_row(
  52. &mut self,
  53. _row_rev: &RowRevision,
  54. _field_rev: &FieldRevision,
  55. ) -> FlowyResult<Vec<GroupChangesetPB>> {
  56. Ok(vec![])
  57. }
  58. fn move_group_row(&mut self, _context: MoveGroupRowContext) -> FlowyResult<Vec<GroupChangesetPB>> {
  59. todo!()
  60. }
  61. fn did_update_field(&mut self, _field_rev: &FieldRevision) -> FlowyResult<Option<GroupViewChangesetPB>> {
  62. Ok(None)
  63. }
  64. }
  65. impl GroupController for DefaultGroupController {
  66. fn will_create_row(&mut self, _row_rev: &mut RowRevision, _field_rev: &FieldRevision, _group_id: &str) {}
  67. fn did_create_row(&mut self, _row_rev: &RowPB, _group_id: &str) {}
  68. }