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::ReplaceResultDto;
8use crate::ReplaceTextDto;
9use crate::units_of_work::find_all_uow::FindAllUnitOfWorkFactory;
10use crate::units_of_work::find_text_uow::FindTextUnitOfWorkFactory;
11use crate::units_of_work::replace_text_uow::ReplaceTextUnitOfWorkFactory;
12use crate::use_cases::find_all_uc::FindAllUseCase;
13use crate::use_cases::find_text_uc::FindTextUseCase;
14use crate::use_cases::replace_text_uc::ReplaceTextUseCase;
15use anyhow::Result;
16use common::event::{Event, Origin};
17
18use common::event::DocumentSearchEvent::FindAll;
19use common::event::DocumentSearchEvent::FindText;
20use common::event::DocumentSearchEvent::ReplaceText;
21
22use common::undo_redo::UndoRedoManager;
23use common::{database::db_context::DbContext, event::EventHub};
24use std::sync::Arc;
25
26pub fn find_text(
27    db_context: &DbContext,
28    event_hub: &Arc<EventHub>,
29    dto: &FindTextDto,
30) -> Result<FindResultDto> {
31    let uow_context = FindTextUnitOfWorkFactory::new(db_context);
32    let mut uc = FindTextUseCase::new(Box::new(uow_context));
33    let return_dto = uc.execute(dto)?;
34    // Notify that the handling manifest has been loaded
35    event_hub.send_event(Event {
36        origin: Origin::DocumentSearch(FindText),
37        ids: vec![],
38        data: None,
39    });
40    Ok(return_dto)
41}
42
43pub fn find_all(
44    db_context: &DbContext,
45    event_hub: &Arc<EventHub>,
46    dto: &FindAllDto,
47) -> Result<FindAllResultDto> {
48    let uow_context = FindAllUnitOfWorkFactory::new(db_context);
49    let mut uc = FindAllUseCase::new(Box::new(uow_context));
50    let return_dto = uc.execute(dto)?;
51    // Notify that the handling manifest has been loaded
52    event_hub.send_event(Event {
53        origin: Origin::DocumentSearch(FindAll),
54        ids: vec![],
55        data: None,
56    });
57    Ok(return_dto)
58}
59
60pub fn replace_text(
61    db_context: &DbContext,
62    event_hub: &Arc<EventHub>,
63    undo_redo_manager: &mut UndoRedoManager,
64    stack_id: Option<u64>,
65    dto: &ReplaceTextDto,
66) -> Result<ReplaceResultDto> {
67    let uow_context = ReplaceTextUnitOfWorkFactory::new(db_context, event_hub);
68    let mut uc = ReplaceTextUseCase::new(Box::new(uow_context));
69    let return_dto = uc.execute(dto)?;
70    undo_redo_manager.add_command_to_stack(Box::new(uc), stack_id)?;
71    // Notify that the handling manifest has been loaded
72    event_hub.send_event(Event {
73        origin: Origin::DocumentSearch(ReplaceText),
74        ids: vec![],
75        data: None,
76    });
77    Ok(return_dto)
78}