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 fn undo(&self) -> anyhow::Result<()>;
47 fn action_type(&self) -> ActionType;
48}
49
50#[derive(Clone)]
52pub enum ActionCommand {
53 Cell(crate::actions::CellAction),
54 Row(crate::actions::RowAction),
55 Column(crate::actions::ColumnAction),
56 Sheet(crate::actions::SheetAction),
57 MultiRow(crate::actions::MultiRowAction),
58 MultiColumn(crate::actions::MultiColumnAction),
59}