Skip to main content

text_document_direct_access/inline_element/
inline_element_controller.rs

1// Generated by Qleany v1.5.0 from entity_controller.tera
2
3use super::{
4    dtos::{CreateInlineElementDto, InlineElementDto, UpdateInlineElementDto},
5    units_of_work::{InlineElementReadUoWFactory, InlineElementWriteUoWFactory},
6};
7use anyhow::{Ok, Result};
8use common::direct_access::use_cases;
9use common::undo_redo::UndoRedoManager;
10use common::{database::db_context::DbContext, event::EventHub, types::EntityId};
11use std::sync::Arc;
12
13pub fn create_orphan(
14    db_context: &DbContext,
15    event_hub: &Arc<EventHub>,
16    undo_redo_manager: &mut UndoRedoManager,
17    stack_id: Option<u64>,
18    entity: &CreateInlineElementDto,
19) -> Result<InlineElementDto> {
20    let uow_factory = InlineElementWriteUoWFactory::new(db_context, event_hub);
21    let mut uc = use_cases::UndoableCreateOrphanUseCase::new(uow_factory);
22    let entity_in: common::entities::InlineElement = entity.into();
23    let result = uc.execute(&entity_in)?;
24    undo_redo_manager.add_command_to_stack(Box::new(uc), stack_id)?;
25    Ok(result.into())
26}
27
28pub fn create_orphan_multi(
29    db_context: &DbContext,
30    event_hub: &Arc<EventHub>,
31    undo_redo_manager: &mut UndoRedoManager,
32    stack_id: Option<u64>,
33    entities: &[CreateInlineElementDto],
34) -> Result<Vec<InlineElementDto>> {
35    let uow_factory = InlineElementWriteUoWFactory::new(db_context, event_hub);
36    let entities_in: Vec<common::entities::InlineElement> =
37        entities.iter().map(|dto| dto.into()).collect();
38    let mut uc = use_cases::UndoableCreateOrphanUseCase::new(uow_factory);
39    let result = uc.execute_multi(&entities_in)?;
40    undo_redo_manager.add_command_to_stack(Box::new(uc), stack_id)?;
41    Ok(result.into_iter().map(|e| e.into()).collect())
42}
43
44pub fn create(
45    db_context: &DbContext,
46    event_hub: &Arc<EventHub>,
47    undo_redo_manager: &mut UndoRedoManager,
48    stack_id: Option<u64>,
49    entity: &CreateInlineElementDto,
50    owner_id: EntityId,
51    index: i32,
52) -> Result<InlineElementDto> {
53    let uow_factory = InlineElementWriteUoWFactory::new(db_context, event_hub);
54    let entity_in: common::entities::InlineElement = entity.into();
55    let strategy = use_cases::OwnerStrategy::Appending;
56    let mut uc = use_cases::UndoableCreateUseCase::new(uow_factory, strategy);
57    let result = uc.execute(&entity_in, owner_id, index)?;
58    undo_redo_manager.add_command_to_stack(Box::new(uc), stack_id)?;
59    Ok(result.into())
60}
61
62pub fn create_multi(
63    db_context: &DbContext,
64    event_hub: &Arc<EventHub>,
65    undo_redo_manager: &mut UndoRedoManager,
66    stack_id: Option<u64>,
67    entities: &[CreateInlineElementDto],
68    owner_id: EntityId,
69    index: i32,
70) -> Result<Vec<InlineElementDto>> {
71    let uow_factory = InlineElementWriteUoWFactory::new(db_context, event_hub);
72    let entities_in: Vec<common::entities::InlineElement> =
73        entities.iter().map(|dto| dto.into()).collect();
74    let strategy = use_cases::OwnerStrategy::Appending;
75    let mut uc = use_cases::UndoableCreateUseCase::new(uow_factory, strategy);
76    let result = uc.execute_multi(&entities_in, owner_id, index)?;
77    undo_redo_manager.add_command_to_stack(Box::new(uc), stack_id)?;
78    Ok(result.into_iter().map(|e| e.into()).collect())
79}
80
81pub fn get(db_context: &DbContext, id: &EntityId) -> Result<Option<InlineElementDto>> {
82    let uow_factory = InlineElementReadUoWFactory::new(db_context);
83    let uc = use_cases::GetUseCase::new(uow_factory);
84    Ok(uc.execute(id)?.map(|e| e.into()))
85}
86
87pub fn get_all(db_context: &DbContext) -> Result<Vec<InlineElementDto>> {
88    let uow_factory = InlineElementReadUoWFactory::new(db_context);
89    let uc = use_cases::GetUseCase::new(uow_factory);
90    Ok(uc.execute_all()?.into_iter().map(|e| e.into()).collect())
91}
92
93pub fn get_multi(
94    db_context: &DbContext,
95    ids: &[EntityId],
96) -> Result<Vec<Option<InlineElementDto>>> {
97    let uow_factory = InlineElementReadUoWFactory::new(db_context);
98    let uc = use_cases::GetUseCase::new(uow_factory);
99    Ok(uc
100        .execute_multi(ids)?
101        .into_iter()
102        .map(|o| o.map(|e| e.into()))
103        .collect())
104}
105
106pub fn update(
107    db_context: &DbContext,
108    event_hub: &Arc<EventHub>,
109    undo_redo_manager: &mut UndoRedoManager,
110    stack_id: Option<u64>,
111    entity: &UpdateInlineElementDto,
112) -> Result<InlineElementDto> {
113    let uow_factory = InlineElementWriteUoWFactory::new(db_context, event_hub);
114    let entity_in: common::entities::InlineElement = entity.into();
115    let mut uc = use_cases::UndoableUpdateUseCase::new(uow_factory);
116    let result = uc.execute(&entity_in)?;
117    undo_redo_manager.add_command_to_stack(Box::new(uc), stack_id)?;
118    Ok(result.into())
119}
120
121pub fn update_multi(
122    db_context: &DbContext,
123    event_hub: &Arc<EventHub>,
124    undo_redo_manager: &mut UndoRedoManager,
125    stack_id: Option<u64>,
126    entities: &[UpdateInlineElementDto],
127) -> Result<Vec<InlineElementDto>> {
128    let uow_factory = InlineElementWriteUoWFactory::new(db_context, event_hub);
129    let entities_in: Vec<common::entities::InlineElement> =
130        entities.iter().map(|dto| dto.into()).collect();
131    let mut uc = use_cases::UndoableUpdateUseCase::new(uow_factory);
132    let result = uc.execute_multi(&entities_in)?;
133    undo_redo_manager.add_command_to_stack(Box::new(uc), stack_id)?;
134    Ok(result.into_iter().map(|e| e.into()).collect())
135}
136
137pub fn update_with_relationships(
138    db_context: &DbContext,
139    event_hub: &Arc<EventHub>,
140    undo_redo_manager: &mut UndoRedoManager,
141    stack_id: Option<u64>,
142    entity: &InlineElementDto,
143) -> Result<InlineElementDto> {
144    let uow_factory = InlineElementWriteUoWFactory::new(db_context, event_hub);
145    let entity_in: common::entities::InlineElement = entity.into();
146    let mut uc = use_cases::UndoableUpdateWithRelationshipsUseCase::new(uow_factory);
147    let result = uc.execute(&entity_in)?;
148    undo_redo_manager.add_command_to_stack(Box::new(uc), stack_id)?;
149    Ok(result.into())
150}
151
152pub fn update_with_relationships_multi(
153    db_context: &DbContext,
154    event_hub: &Arc<EventHub>,
155    undo_redo_manager: &mut UndoRedoManager,
156    stack_id: Option<u64>,
157    entities: &[InlineElementDto],
158) -> Result<Vec<InlineElementDto>> {
159    let uow_factory = InlineElementWriteUoWFactory::new(db_context, event_hub);
160    let entities_in: Vec<common::entities::InlineElement> =
161        entities.iter().map(|dto| dto.into()).collect();
162    let mut uc = use_cases::UndoableUpdateWithRelationshipsUseCase::new(uow_factory);
163    let result = uc.execute_multi(&entities_in)?;
164    undo_redo_manager.add_command_to_stack(Box::new(uc), stack_id)?;
165    Ok(result.into_iter().map(|e| e.into()).collect())
166}
167
168pub fn remove(
169    db_context: &DbContext,
170    event_hub: &Arc<EventHub>,
171    undo_redo_manager: &mut UndoRedoManager,
172    stack_id: Option<u64>,
173    id: &EntityId,
174) -> Result<()> {
175    let uow_factory = InlineElementWriteUoWFactory::new(db_context, event_hub);
176    let mut uc = use_cases::UndoableRemoveUseCase::new(uow_factory);
177    uc.execute(id)?;
178    undo_redo_manager.add_command_to_stack(Box::new(uc), stack_id)?;
179    Ok(())
180}
181
182pub fn remove_multi(
183    db_context: &DbContext,
184    event_hub: &Arc<EventHub>,
185    undo_redo_manager: &mut UndoRedoManager,
186    stack_id: Option<u64>,
187    ids: &[EntityId],
188) -> Result<()> {
189    let uow_factory = InlineElementWriteUoWFactory::new(db_context, event_hub);
190    let mut uc = use_cases::UndoableRemoveUseCase::new(uow_factory);
191    uc.execute_multi(ids)?;
192    undo_redo_manager.add_command_to_stack(Box::new(uc), stack_id)?;
193    Ok(())
194}