Skip to main content

text_document_search/
document_search_controller.rs

1// Generated by Qleany v1.4.8 from feature_controller.tera
2
3use crate::FindAllDto;
4use crate::FindAllResultDto;
5use crate::FindResultDto;
6use crate::FindTextDto;
7use crate::ReplaceRangesDto;
8use crate::ReplaceRangesResultDto;
9use crate::ReplaceResultDto;
10use crate::ReplaceTextDto;
11use crate::units_of_work::find_all_uow::FindAllUnitOfWorkFactory;
12use crate::units_of_work::find_text_uow::FindTextUnitOfWorkFactory;
13use crate::units_of_work::replace_ranges_uow::ReplaceRangesUnitOfWorkFactory;
14use crate::units_of_work::replace_text_uow::ReplaceTextUnitOfWorkFactory;
15use crate::use_cases::find_all_uc::FindAllUseCase;
16use crate::use_cases::find_text_uc::FindTextUseCase;
17use crate::use_cases::replace_ranges_uc::ReplaceRangesUseCase;
18use crate::use_cases::replace_text_uc::ReplaceTextUseCase;
19use anyhow::Result;
20use common::event::{Event, Origin};
21
22use common::event::DocumentSearchEvent::FindAll;
23use common::event::DocumentSearchEvent::FindText;
24use common::event::DocumentSearchEvent::ReplaceRanges;
25use common::event::DocumentSearchEvent::ReplaceText;
26
27use common::undo_redo::UndoRedoManager;
28use common::{database::db_context::DbContext, event::EventHub};
29use std::sync::Arc;
30
31pub fn find_text(
32    db_context: &DbContext,
33    event_hub: &Arc<EventHub>,
34    dto: &FindTextDto,
35) -> Result<FindResultDto> {
36    let uow_context = FindTextUnitOfWorkFactory::new(db_context);
37    let mut uc = FindTextUseCase::new(Box::new(uow_context));
38    let return_dto = uc.execute(dto)?;
39    // Notify that the handling manifest has been loaded
40    event_hub.send_event(Event {
41        origin: Origin::DocumentSearch(FindText),
42        ids: vec![],
43        data: None,
44    });
45    Ok(return_dto)
46}
47
48pub fn find_all(
49    db_context: &DbContext,
50    event_hub: &Arc<EventHub>,
51    dto: &FindAllDto,
52) -> Result<FindAllResultDto> {
53    let uow_context = FindAllUnitOfWorkFactory::new(db_context);
54    let mut uc = FindAllUseCase::new(Box::new(uow_context));
55    let return_dto = uc.execute(dto)?;
56    // Notify that the handling manifest has been loaded
57    event_hub.send_event(Event {
58        origin: Origin::DocumentSearch(FindAll),
59        ids: vec![],
60        data: None,
61    });
62    Ok(return_dto)
63}
64
65pub fn replace_text(
66    db_context: &DbContext,
67    event_hub: &Arc<EventHub>,
68    undo_redo_manager: &mut UndoRedoManager,
69    stack_id: Option<u64>,
70    dto: &ReplaceTextDto,
71) -> Result<ReplaceResultDto> {
72    let uow_context = ReplaceTextUnitOfWorkFactory::new(db_context, event_hub);
73    let mut uc = ReplaceTextUseCase::new(Box::new(uow_context));
74    let return_dto = uc.execute(dto)?;
75    undo_redo_manager.add_command_to_stack(Box::new(uc), stack_id)?;
76    // Notify that the handling manifest has been loaded
77    event_hub.send_event(Event {
78        origin: Origin::DocumentSearch(ReplaceText),
79        ids: vec![],
80        data: None,
81    });
82    Ok(return_dto)
83}
84
85pub fn replace_ranges(
86    db_context: &DbContext,
87    event_hub: &Arc<EventHub>,
88    undo_redo_manager: &mut UndoRedoManager,
89    stack_id: Option<u64>,
90    dto: &ReplaceRangesDto,
91) -> Result<ReplaceRangesResultDto> {
92    let uow_context = ReplaceRangesUnitOfWorkFactory::new(db_context, event_hub);
93    let mut uc = ReplaceRangesUseCase::new(Box::new(uow_context));
94    let return_dto = uc.execute(dto)?;
95    undo_redo_manager.add_command_to_stack(Box::new(uc), stack_id)?;
96    event_hub.send_event(Event {
97        origin: Origin::DocumentSearch(ReplaceRanges),
98        ids: vec![],
99        data: None,
100    });
101    Ok(return_dto)
102}