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