excel_cli/actions/
types.rs1#[derive(Clone, Debug)]
2pub enum ActionType {
3 Edit,
4 Cut,
5 Paste,
6 CreateSheet,
7 DeleteRow,
8 DeleteColumn,
9 DeleteSheet,
10 DeleteMultiRows,
11 DeleteMultiColumns,
12}
13
14pub trait ActionExecutor {
16 fn execute_action(&mut self, action: &ActionCommand) -> Result<(), anyhow::Error>;
17 fn execute_cell_action(
18 &mut self,
19 action: &crate::actions::CellAction,
20 ) -> Result<(), anyhow::Error>;
21 fn execute_row_action(
22 &mut self,
23 action: &crate::actions::RowAction,
24 ) -> Result<(), anyhow::Error>;
25 fn execute_column_action(
26 &mut self,
27 action: &crate::actions::ColumnAction,
28 ) -> Result<(), anyhow::Error>;
29 fn execute_sheet_action(
30 &mut self,
31 action: &crate::actions::SheetAction,
32 ) -> Result<(), anyhow::Error>;
33 fn execute_multi_row_action(
34 &mut self,
35 action: &crate::actions::MultiRowAction,
36 ) -> Result<(), anyhow::Error>;
37 fn execute_multi_column_action(
38 &mut self,
39 action: &crate::actions::MultiColumnAction,
40 ) -> Result<(), anyhow::Error>;
41}
42
43pub trait Command {
45 fn execute(&self) -> anyhow::Result<()> {
46 unimplemented!("Requires an ActionExecutor implementation")
47 }
48
49 fn undo(&self) -> anyhow::Result<()> {
50 unimplemented!("Requires an ActionExecutor implementation")
51 }
52
53 fn action_type(&self) -> ActionType;
54}
55
56#[derive(Clone)]
58pub enum ActionCommand {
59 Cell(crate::actions::CellAction),
60 Row(crate::actions::RowAction),
61 Column(crate::actions::ColumnAction),
62 Sheet(crate::actions::SheetAction),
63 MultiRow(crate::actions::MultiRowAction),
64 MultiColumn(crate::actions::MultiColumnAction),
65}