Skip to main content

text_document_editing/
document_editing_controller.rs

1// Generated by Qleany v1.5.1 from feature_controller.tera
2
3use crate::CreateListDto;
4use crate::CreateListResultDto;
5use crate::DeleteTextDto;
6use crate::DeleteTextResultDto;
7use crate::InsertBlockDto;
8use crate::InsertBlockResultDto;
9use crate::InsertFormattedTextDto;
10use crate::InsertFormattedTextResultDto;
11use crate::InsertFragmentDto;
12use crate::InsertFragmentResultDto;
13use crate::InsertFrameDto;
14use crate::InsertFrameResultDto;
15use crate::InsertHtmlAtPositionDto;
16use crate::InsertHtmlAtPositionResultDto;
17use crate::InsertImageDto;
18use crate::InsertImageResultDto;
19use crate::InsertListDto;
20use crate::InsertListResultDto;
21use crate::InsertMarkdownAtPositionDto;
22use crate::InsertMarkdownAtPositionResultDto;
23use crate::InsertTableColumnDto;
24use crate::InsertTableColumnResultDto;
25use crate::InsertTableDto;
26use crate::InsertTableResultDto;
27use crate::InsertTableRowDto;
28use crate::InsertTableRowResultDto;
29use crate::InsertTextDto;
30use crate::InsertTextResultDto;
31use crate::MergeTableCellsDto;
32use crate::MergeTableCellsResultDto;
33use crate::RemoveTableColumnDto;
34use crate::RemoveTableColumnResultDto;
35use crate::RemoveTableDto;
36use crate::RemoveTableRowDto;
37use crate::RemoveTableRowResultDto;
38use crate::SplitTableCellDto;
39use crate::SplitTableCellResultDto;
40use crate::units_of_work::create_list_uow::CreateListUnitOfWorkFactory;
41use crate::units_of_work::delete_text_uow::DeleteTextUnitOfWorkFactory;
42use crate::units_of_work::insert_block_uow::InsertBlockUnitOfWorkFactory;
43use crate::units_of_work::insert_formatted_text_uow::InsertFormattedTextUnitOfWorkFactory;
44use crate::units_of_work::insert_fragment_uow::InsertFragmentUnitOfWorkFactory;
45use crate::units_of_work::insert_frame_uow::InsertFrameUnitOfWorkFactory;
46use crate::units_of_work::insert_html_at_position_uow::InsertHtmlAtPositionUnitOfWorkFactory;
47use crate::units_of_work::insert_image_uow::InsertImageUnitOfWorkFactory;
48use crate::units_of_work::insert_list_uow::InsertListUnitOfWorkFactory;
49use crate::units_of_work::insert_markdown_at_position_uow::InsertMarkdownAtPositionUnitOfWorkFactory;
50use crate::units_of_work::insert_table_column_uow::InsertTableColumnUnitOfWorkFactory;
51use crate::units_of_work::insert_table_row_uow::InsertTableRowUnitOfWorkFactory;
52use crate::units_of_work::insert_table_uow::InsertTableUnitOfWorkFactory;
53use crate::units_of_work::insert_text_uow::InsertTextUnitOfWorkFactory;
54use crate::units_of_work::merge_table_cells_uow::MergeTableCellsUnitOfWorkFactory;
55use crate::units_of_work::remove_table_column_uow::RemoveTableColumnUnitOfWorkFactory;
56use crate::units_of_work::remove_table_row_uow::RemoveTableRowUnitOfWorkFactory;
57use crate::units_of_work::remove_table_uow::RemoveTableUnitOfWorkFactory;
58use crate::units_of_work::split_table_cell_uow::SplitTableCellUnitOfWorkFactory;
59use crate::use_cases::create_list_uc::CreateListUseCase;
60use crate::use_cases::delete_text_uc::DeleteTextUseCase;
61use crate::use_cases::insert_block_uc::InsertBlockUseCase;
62use crate::use_cases::insert_formatted_text_uc::InsertFormattedTextUseCase;
63use crate::use_cases::insert_fragment_uc::InsertFragmentUseCase;
64use crate::use_cases::insert_frame_uc::InsertFrameUseCase;
65use crate::use_cases::insert_html_at_position_uc::InsertHtmlAtPositionUseCase;
66use crate::use_cases::insert_image_uc::InsertImageUseCase;
67use crate::use_cases::insert_list_uc::InsertListUseCase;
68use crate::use_cases::insert_markdown_at_position_uc::InsertMarkdownAtPositionUseCase;
69use crate::use_cases::insert_table_column_uc::InsertTableColumnUseCase;
70use crate::use_cases::insert_table_row_uc::InsertTableRowUseCase;
71use crate::use_cases::insert_table_uc::InsertTableUseCase;
72use crate::use_cases::insert_text_uc::InsertTextUseCase;
73use crate::use_cases::merge_table_cells_uc::MergeTableCellsUseCase;
74use crate::use_cases::remove_table_column_uc::RemoveTableColumnUseCase;
75use crate::use_cases::remove_table_row_uc::RemoveTableRowUseCase;
76use crate::use_cases::remove_table_uc::RemoveTableUseCase;
77use crate::use_cases::split_table_cell_uc::SplitTableCellUseCase;
78use anyhow::Result;
79use common::event::{Event, Origin};
80
81use common::event::DocumentEditingEvent::CreateList;
82use common::event::DocumentEditingEvent::DeleteText;
83use common::event::DocumentEditingEvent::InsertBlock;
84use common::event::DocumentEditingEvent::InsertFormattedText;
85use common::event::DocumentEditingEvent::InsertFragment;
86use common::event::DocumentEditingEvent::InsertFrame;
87use common::event::DocumentEditingEvent::InsertHtmlAtPosition;
88use common::event::DocumentEditingEvent::InsertImage;
89use common::event::DocumentEditingEvent::InsertList;
90use common::event::DocumentEditingEvent::InsertMarkdownAtPosition;
91use common::event::DocumentEditingEvent::InsertTable;
92use common::event::DocumentEditingEvent::InsertTableColumn;
93use common::event::DocumentEditingEvent::InsertTableRow;
94use common::event::DocumentEditingEvent::InsertText;
95use common::event::DocumentEditingEvent::MergeTableCells;
96use common::event::DocumentEditingEvent::RemoveTable;
97use common::event::DocumentEditingEvent::RemoveTableColumn;
98use common::event::DocumentEditingEvent::RemoveTableRow;
99use common::event::DocumentEditingEvent::SplitTableCell;
100
101use common::undo_redo::UndoRedoManager;
102use common::{database::db_context::DbContext, event::EventHub};
103use std::sync::Arc;
104
105pub fn insert_text(
106    db_context: &DbContext,
107    event_hub: &Arc<EventHub>,
108    undo_redo_manager: &mut UndoRedoManager,
109    stack_id: Option<u64>,
110    dto: &InsertTextDto,
111) -> Result<InsertTextResultDto> {
112    let uow_context = InsertTextUnitOfWorkFactory::new(db_context, event_hub);
113    let mut uc = InsertTextUseCase::new(Box::new(uow_context));
114    let return_dto = uc.execute(dto)?;
115    undo_redo_manager.add_command_to_stack(Box::new(uc), stack_id)?;
116    // Notify that the handling manifest has been loaded
117    event_hub.send_event(Event {
118        origin: Origin::DocumentEditing(InsertText),
119        ids: vec![],
120        data: None,
121    });
122    Ok(return_dto)
123}
124
125pub fn delete_text(
126    db_context: &DbContext,
127    event_hub: &Arc<EventHub>,
128    undo_redo_manager: &mut UndoRedoManager,
129    stack_id: Option<u64>,
130    dto: &DeleteTextDto,
131) -> Result<DeleteTextResultDto> {
132    let uow_context = DeleteTextUnitOfWorkFactory::new(db_context, event_hub);
133    let mut uc = DeleteTextUseCase::new(Box::new(uow_context));
134    let return_dto = uc.execute(dto)?;
135    undo_redo_manager.add_command_to_stack(Box::new(uc), stack_id)?;
136    // Notify that the handling manifest has been loaded
137    event_hub.send_event(Event {
138        origin: Origin::DocumentEditing(DeleteText),
139        ids: vec![],
140        data: None,
141    });
142    Ok(return_dto)
143}
144
145pub fn insert_block(
146    db_context: &DbContext,
147    event_hub: &Arc<EventHub>,
148    undo_redo_manager: &mut UndoRedoManager,
149    stack_id: Option<u64>,
150    dto: &InsertBlockDto,
151) -> Result<InsertBlockResultDto> {
152    let uow_context = InsertBlockUnitOfWorkFactory::new(db_context, event_hub);
153    let mut uc = InsertBlockUseCase::new(Box::new(uow_context));
154    let return_dto = uc.execute(dto)?;
155    undo_redo_manager.add_command_to_stack(Box::new(uc), stack_id)?;
156    // Notify that the handling manifest has been loaded
157    event_hub.send_event(Event {
158        origin: Origin::DocumentEditing(InsertBlock),
159        ids: vec![],
160        data: None,
161    });
162    Ok(return_dto)
163}
164
165pub fn insert_image(
166    db_context: &DbContext,
167    event_hub: &Arc<EventHub>,
168    undo_redo_manager: &mut UndoRedoManager,
169    stack_id: Option<u64>,
170    dto: &InsertImageDto,
171) -> Result<InsertImageResultDto> {
172    let uow_context = InsertImageUnitOfWorkFactory::new(db_context, event_hub);
173    let mut uc = InsertImageUseCase::new(Box::new(uow_context));
174    let return_dto = uc.execute(dto)?;
175    undo_redo_manager.add_command_to_stack(Box::new(uc), stack_id)?;
176    // Notify that the handling manifest has been loaded
177    event_hub.send_event(Event {
178        origin: Origin::DocumentEditing(InsertImage),
179        ids: vec![],
180        data: None,
181    });
182    Ok(return_dto)
183}
184
185pub fn insert_frame(
186    db_context: &DbContext,
187    event_hub: &Arc<EventHub>,
188    undo_redo_manager: &mut UndoRedoManager,
189    stack_id: Option<u64>,
190    dto: &InsertFrameDto,
191) -> Result<InsertFrameResultDto> {
192    let uow_context = InsertFrameUnitOfWorkFactory::new(db_context, event_hub);
193    let mut uc = InsertFrameUseCase::new(Box::new(uow_context));
194    let return_dto = uc.execute(dto)?;
195    undo_redo_manager.add_command_to_stack(Box::new(uc), stack_id)?;
196    // Notify that the handling manifest has been loaded
197    event_hub.send_event(Event {
198        origin: Origin::DocumentEditing(InsertFrame),
199        ids: vec![],
200        data: None,
201    });
202    Ok(return_dto)
203}
204
205pub fn insert_formatted_text(
206    db_context: &DbContext,
207    event_hub: &Arc<EventHub>,
208    undo_redo_manager: &mut UndoRedoManager,
209    stack_id: Option<u64>,
210    dto: &InsertFormattedTextDto,
211) -> Result<InsertFormattedTextResultDto> {
212    let uow_context = InsertFormattedTextUnitOfWorkFactory::new(db_context, event_hub);
213    let mut uc = InsertFormattedTextUseCase::new(Box::new(uow_context));
214    let return_dto = uc.execute(dto)?;
215    undo_redo_manager.add_command_to_stack(Box::new(uc), stack_id)?;
216    // Notify that the handling manifest has been loaded
217    event_hub.send_event(Event {
218        origin: Origin::DocumentEditing(InsertFormattedText),
219        ids: vec![],
220        data: None,
221    });
222    Ok(return_dto)
223}
224
225pub fn create_list(
226    db_context: &DbContext,
227    event_hub: &Arc<EventHub>,
228    undo_redo_manager: &mut UndoRedoManager,
229    stack_id: Option<u64>,
230    dto: &CreateListDto,
231) -> Result<CreateListResultDto> {
232    let uow_context = CreateListUnitOfWorkFactory::new(db_context, event_hub);
233    let mut uc = CreateListUseCase::new(Box::new(uow_context));
234    let return_dto = uc.execute(dto)?;
235    undo_redo_manager.add_command_to_stack(Box::new(uc), stack_id)?;
236    // Notify that the handling manifest has been loaded
237    event_hub.send_event(Event {
238        origin: Origin::DocumentEditing(CreateList),
239        ids: vec![],
240        data: None,
241    });
242    Ok(return_dto)
243}
244
245pub fn insert_list(
246    db_context: &DbContext,
247    event_hub: &Arc<EventHub>,
248    undo_redo_manager: &mut UndoRedoManager,
249    stack_id: Option<u64>,
250    dto: &InsertListDto,
251) -> Result<InsertListResultDto> {
252    let uow_context = InsertListUnitOfWorkFactory::new(db_context, event_hub);
253    let mut uc = InsertListUseCase::new(Box::new(uow_context));
254    let return_dto = uc.execute(dto)?;
255    undo_redo_manager.add_command_to_stack(Box::new(uc), stack_id)?;
256    // Notify that the handling manifest has been loaded
257    event_hub.send_event(Event {
258        origin: Origin::DocumentEditing(InsertList),
259        ids: vec![],
260        data: None,
261    });
262    Ok(return_dto)
263}
264
265pub fn insert_fragment(
266    db_context: &DbContext,
267    event_hub: &Arc<EventHub>,
268    undo_redo_manager: &mut UndoRedoManager,
269    stack_id: Option<u64>,
270    dto: &InsertFragmentDto,
271) -> Result<InsertFragmentResultDto> {
272    let uow_context = InsertFragmentUnitOfWorkFactory::new(db_context, event_hub);
273    let mut uc = InsertFragmentUseCase::new(Box::new(uow_context));
274    let return_dto = uc.execute(dto)?;
275    undo_redo_manager.add_command_to_stack(Box::new(uc), stack_id)?;
276    // Notify that the handling manifest has been loaded
277    event_hub.send_event(Event {
278        origin: Origin::DocumentEditing(InsertFragment),
279        ids: vec![],
280        data: None,
281    });
282    Ok(return_dto)
283}
284
285pub fn insert_html_at_position(
286    db_context: &DbContext,
287    event_hub: &Arc<EventHub>,
288    undo_redo_manager: &mut UndoRedoManager,
289    stack_id: Option<u64>,
290    dto: &InsertHtmlAtPositionDto,
291) -> Result<InsertHtmlAtPositionResultDto> {
292    let uow_context = InsertHtmlAtPositionUnitOfWorkFactory::new(db_context, event_hub);
293    let mut uc = InsertHtmlAtPositionUseCase::new(Box::new(uow_context));
294    let return_dto = uc.execute(dto)?;
295    undo_redo_manager.add_command_to_stack(Box::new(uc), stack_id)?;
296    // Notify that the handling manifest has been loaded
297    event_hub.send_event(Event {
298        origin: Origin::DocumentEditing(InsertHtmlAtPosition),
299        ids: vec![],
300        data: None,
301    });
302    Ok(return_dto)
303}
304
305pub fn insert_markdown_at_position(
306    db_context: &DbContext,
307    event_hub: &Arc<EventHub>,
308    undo_redo_manager: &mut UndoRedoManager,
309    stack_id: Option<u64>,
310    dto: &InsertMarkdownAtPositionDto,
311) -> Result<InsertMarkdownAtPositionResultDto> {
312    let uow_context = InsertMarkdownAtPositionUnitOfWorkFactory::new(db_context, event_hub);
313    let mut uc = InsertMarkdownAtPositionUseCase::new(Box::new(uow_context));
314    let return_dto = uc.execute(dto)?;
315    undo_redo_manager.add_command_to_stack(Box::new(uc), stack_id)?;
316    // Notify that the handling manifest has been loaded
317    event_hub.send_event(Event {
318        origin: Origin::DocumentEditing(InsertMarkdownAtPosition),
319        ids: vec![],
320        data: None,
321    });
322    Ok(return_dto)
323}
324
325pub fn insert_table(
326    db_context: &DbContext,
327    event_hub: &Arc<EventHub>,
328    undo_redo_manager: &mut UndoRedoManager,
329    stack_id: Option<u64>,
330    dto: &InsertTableDto,
331) -> Result<InsertTableResultDto> {
332    let uow_context = InsertTableUnitOfWorkFactory::new(db_context, event_hub);
333    let mut uc = InsertTableUseCase::new(Box::new(uow_context));
334    let return_dto = uc.execute(dto)?;
335    undo_redo_manager.add_command_to_stack(Box::new(uc), stack_id)?;
336    // Notify that the handling manifest has been loaded
337    event_hub.send_event(Event {
338        origin: Origin::DocumentEditing(InsertTable),
339        ids: vec![],
340        data: None,
341    });
342    Ok(return_dto)
343}
344
345pub fn remove_table(
346    db_context: &DbContext,
347    event_hub: &Arc<EventHub>,
348    undo_redo_manager: &mut UndoRedoManager,
349    stack_id: Option<u64>,
350    dto: &RemoveTableDto,
351) -> Result<()> {
352    let uow_context = RemoveTableUnitOfWorkFactory::new(db_context, event_hub);
353    let mut uc = RemoveTableUseCase::new(Box::new(uow_context));
354    uc.execute(dto)?;
355    undo_redo_manager.add_command_to_stack(Box::new(uc), stack_id)?;
356    // Notify that the handling manifest has been loaded
357    event_hub.send_event(Event {
358        origin: Origin::DocumentEditing(RemoveTable),
359        ids: vec![],
360        data: None,
361    });
362    Ok(())
363}
364
365pub fn insert_table_row(
366    db_context: &DbContext,
367    event_hub: &Arc<EventHub>,
368    undo_redo_manager: &mut UndoRedoManager,
369    stack_id: Option<u64>,
370    dto: &InsertTableRowDto,
371) -> Result<InsertTableRowResultDto> {
372    let uow_context = InsertTableRowUnitOfWorkFactory::new(db_context, event_hub);
373    let mut uc = InsertTableRowUseCase::new(Box::new(uow_context));
374    let return_dto = uc.execute(dto)?;
375    undo_redo_manager.add_command_to_stack(Box::new(uc), stack_id)?;
376    // Notify that the handling manifest has been loaded
377    event_hub.send_event(Event {
378        origin: Origin::DocumentEditing(InsertTableRow),
379        ids: vec![],
380        data: None,
381    });
382    Ok(return_dto)
383}
384
385pub fn insert_table_column(
386    db_context: &DbContext,
387    event_hub: &Arc<EventHub>,
388    undo_redo_manager: &mut UndoRedoManager,
389    stack_id: Option<u64>,
390    dto: &InsertTableColumnDto,
391) -> Result<InsertTableColumnResultDto> {
392    let uow_context = InsertTableColumnUnitOfWorkFactory::new(db_context, event_hub);
393    let mut uc = InsertTableColumnUseCase::new(Box::new(uow_context));
394    let return_dto = uc.execute(dto)?;
395    undo_redo_manager.add_command_to_stack(Box::new(uc), stack_id)?;
396    // Notify that the handling manifest has been loaded
397    event_hub.send_event(Event {
398        origin: Origin::DocumentEditing(InsertTableColumn),
399        ids: vec![],
400        data: None,
401    });
402    Ok(return_dto)
403}
404
405pub fn remove_table_row(
406    db_context: &DbContext,
407    event_hub: &Arc<EventHub>,
408    undo_redo_manager: &mut UndoRedoManager,
409    stack_id: Option<u64>,
410    dto: &RemoveTableRowDto,
411) -> Result<RemoveTableRowResultDto> {
412    let uow_context = RemoveTableRowUnitOfWorkFactory::new(db_context, event_hub);
413    let mut uc = RemoveTableRowUseCase::new(Box::new(uow_context));
414    let return_dto = uc.execute(dto)?;
415    undo_redo_manager.add_command_to_stack(Box::new(uc), stack_id)?;
416    // Notify that the handling manifest has been loaded
417    event_hub.send_event(Event {
418        origin: Origin::DocumentEditing(RemoveTableRow),
419        ids: vec![],
420        data: None,
421    });
422    Ok(return_dto)
423}
424
425pub fn remove_table_column(
426    db_context: &DbContext,
427    event_hub: &Arc<EventHub>,
428    undo_redo_manager: &mut UndoRedoManager,
429    stack_id: Option<u64>,
430    dto: &RemoveTableColumnDto,
431) -> Result<RemoveTableColumnResultDto> {
432    let uow_context = RemoveTableColumnUnitOfWorkFactory::new(db_context, event_hub);
433    let mut uc = RemoveTableColumnUseCase::new(Box::new(uow_context));
434    let return_dto = uc.execute(dto)?;
435    undo_redo_manager.add_command_to_stack(Box::new(uc), stack_id)?;
436    // Notify that the handling manifest has been loaded
437    event_hub.send_event(Event {
438        origin: Origin::DocumentEditing(RemoveTableColumn),
439        ids: vec![],
440        data: None,
441    });
442    Ok(return_dto)
443}
444
445pub fn merge_table_cells(
446    db_context: &DbContext,
447    event_hub: &Arc<EventHub>,
448    undo_redo_manager: &mut UndoRedoManager,
449    stack_id: Option<u64>,
450    dto: &MergeTableCellsDto,
451) -> Result<MergeTableCellsResultDto> {
452    let uow_context = MergeTableCellsUnitOfWorkFactory::new(db_context, event_hub);
453    let mut uc = MergeTableCellsUseCase::new(Box::new(uow_context));
454    let return_dto = uc.execute(dto)?;
455    undo_redo_manager.add_command_to_stack(Box::new(uc), stack_id)?;
456    // Notify that the handling manifest has been loaded
457    event_hub.send_event(Event {
458        origin: Origin::DocumentEditing(MergeTableCells),
459        ids: vec![],
460        data: None,
461    });
462    Ok(return_dto)
463}
464
465pub fn split_table_cell(
466    db_context: &DbContext,
467    event_hub: &Arc<EventHub>,
468    undo_redo_manager: &mut UndoRedoManager,
469    stack_id: Option<u64>,
470    dto: &SplitTableCellDto,
471) -> Result<SplitTableCellResultDto> {
472    let uow_context = SplitTableCellUnitOfWorkFactory::new(db_context, event_hub);
473    let mut uc = SplitTableCellUseCase::new(Box::new(uow_context));
474    let return_dto = uc.execute(dto)?;
475    undo_redo_manager.add_command_to_stack(Box::new(uc), stack_id)?;
476    // Notify that the handling manifest has been loaded
477    event_hub.send_event(Event {
478        origin: Origin::DocumentEditing(SplitTableCell),
479        ids: vec![],
480        data: None,
481    });
482    Ok(return_dto)
483}