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::AddressableTextResultDto;
4use crate::FindAllDto;
5use crate::FindAllResultDto;
6use crate::FindResultDto;
7use crate::FindTextDto;
8use crate::ReplaceRangesDto;
9use crate::ReplaceRangesResultDto;
10use crate::ReplaceResultDto;
11use crate::ReplaceTextDto;
12use crate::units_of_work::find_all_uow::FindAllUnitOfWorkFactory;
13use crate::units_of_work::find_text_uow::FindTextUnitOfWorkFactory;
14use crate::units_of_work::replace_ranges_uow::ReplaceRangesUnitOfWorkFactory;
15use crate::units_of_work::replace_text_uow::ReplaceTextUnitOfWorkFactory;
16use crate::use_cases::addressable_text_uc::AddressableTextUseCase;
17use crate::use_cases::find_all_uc::FindAllUseCase;
18use crate::use_cases::find_text_uc::FindTextUseCase;
19use crate::use_cases::replace_ranges_uc::ReplaceRangesUseCase;
20use crate::use_cases::replace_text_uc::ReplaceTextUseCase;
21use anyhow::Result;
22use common::event::{Event, Origin};
23
24use common::event::DocumentSearchEvent::AddressableText;
25use common::event::DocumentSearchEvent::FindAll;
26use common::event::DocumentSearchEvent::FindText;
27use common::event::DocumentSearchEvent::ReplaceRanges;
28use common::event::DocumentSearchEvent::ReplaceText;
29
30use common::undo_redo::UndoRedoManager;
31use common::{database::db_context::DbContext, event::EventHub};
32use std::sync::Arc;
33
34pub fn find_text(
35    db_context: &DbContext,
36    event_hub: &Arc<EventHub>,
37    dto: &FindTextDto,
38) -> Result<FindResultDto> {
39    let uow_context = FindTextUnitOfWorkFactory::new(db_context);
40    let mut uc = FindTextUseCase::new(Box::new(uow_context));
41    let return_dto = uc.execute(dto)?;
42    // Notify that the handling manifest has been loaded
43    event_hub.send_event(Event {
44        origin: Origin::DocumentSearch(FindText),
45        ids: vec![],
46        data: None,
47    });
48    Ok(return_dto)
49}
50
51pub fn find_all(
52    db_context: &DbContext,
53    event_hub: &Arc<EventHub>,
54    dto: &FindAllDto,
55) -> Result<FindAllResultDto> {
56    let uow_context = FindAllUnitOfWorkFactory::new(db_context);
57    let mut uc = FindAllUseCase::new(Box::new(uow_context));
58    let return_dto = uc.execute(dto)?;
59    // Notify that the handling manifest has been loaded
60    event_hub.send_event(Event {
61        origin: Origin::DocumentSearch(FindAll),
62        ids: vec![],
63        data: None,
64    });
65    Ok(return_dto)
66}
67
68// Hand-added (NOT generated by Qleany): see `addressable_text_uc`'s doc.
69pub fn addressable_text(
70    db_context: &DbContext,
71    event_hub: &Arc<EventHub>,
72) -> Result<AddressableTextResultDto> {
73    // find_all's own unit of work, on purpose — the returned string is defined as "the
74    // text find_all searches", so it is built by find_all's plumbing, not a copy of it.
75    let uow_context = FindAllUnitOfWorkFactory::new(db_context);
76    let mut uc = AddressableTextUseCase::new(Box::new(uow_context));
77    let return_dto = uc.execute()?;
78    event_hub.send_event(Event {
79        origin: Origin::DocumentSearch(AddressableText),
80        ids: vec![],
81        data: None,
82    });
83    Ok(return_dto)
84}
85
86pub fn replace_text(
87    db_context: &DbContext,
88    event_hub: &Arc<EventHub>,
89    undo_redo_manager: &mut UndoRedoManager,
90    stack_id: Option<u64>,
91    dto: &ReplaceTextDto,
92) -> Result<ReplaceResultDto> {
93    let uow_context = ReplaceTextUnitOfWorkFactory::new(db_context, event_hub);
94    let mut uc = ReplaceTextUseCase::new(Box::new(uow_context));
95    let return_dto = uc.execute(dto)?;
96    undo_redo_manager.add_command_to_stack(Box::new(uc), stack_id)?;
97    // Notify that the handling manifest has been loaded
98    event_hub.send_event(Event {
99        origin: Origin::DocumentSearch(ReplaceText),
100        ids: vec![],
101        data: None,
102    });
103    Ok(return_dto)
104}
105
106pub fn replace_ranges(
107    db_context: &DbContext,
108    event_hub: &Arc<EventHub>,
109    undo_redo_manager: &mut UndoRedoManager,
110    stack_id: Option<u64>,
111    dto: &ReplaceRangesDto,
112) -> Result<ReplaceRangesResultDto> {
113    let uow_context = ReplaceRangesUnitOfWorkFactory::new(db_context, event_hub);
114    let mut uc = ReplaceRangesUseCase::new(Box::new(uow_context));
115    let return_dto = uc.execute(dto)?;
116    undo_redo_manager.add_command_to_stack(Box::new(uc), stack_id)?;
117    event_hub.send_event(Event {
118        origin: Origin::DocumentSearch(ReplaceRanges),
119        ids: vec![],
120        data: None,
121    });
122    Ok(return_dto)
123}