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