text_document_frontend/commands/
document_commands.rs1#![allow(unused_imports, dead_code)]
5
6use crate::app_context::AppContext;
7use anyhow::{Context, Result};
8use common::direct_access::document::DocumentRelationshipField;
9use common::types::EntityId;
10use direct_access::DocumentRelationshipDto;
11use direct_access::{CreateDocumentDto, DocumentDto, UpdateDocumentDto, document_controller};
12
13pub fn create_orphan_document(
15 ctx: &AppContext,
16 stack_id: Option<u64>,
17 dto: &CreateDocumentDto,
18) -> Result<DocumentDto> {
19 let mut undo_redo_manager = ctx.undo_redo_manager.lock().unwrap();
20 document_controller::create_orphan(
21 &ctx.db_context,
22 &ctx.event_hub,
23 &mut undo_redo_manager,
24 stack_id,
25 dto,
26 )
27 .context("creating document")
28}
29pub fn create_document(
31 ctx: &AppContext,
32 stack_id: Option<u64>,
33 dto: &CreateDocumentDto,
34 owner_id: EntityId,
35 index: i32,
36) -> Result<DocumentDto> {
37 let mut undo_redo_manager = ctx.undo_redo_manager.lock().unwrap();
38 document_controller::create(
39 &ctx.db_context,
40 &ctx.event_hub,
41 &mut undo_redo_manager,
42 stack_id,
43 dto,
44 owner_id,
45 index,
46 )
47 .context("creating document")
48}
49pub fn create_orphan_document_multi(
51 ctx: &AppContext,
52 stack_id: Option<u64>,
53 dtos: &[CreateDocumentDto],
54) -> Result<Vec<DocumentDto>> {
55 let mut undo_redo_manager = ctx.undo_redo_manager.lock().unwrap();
56 document_controller::create_orphan_multi(
57 &ctx.db_context,
58 &ctx.event_hub,
59 &mut undo_redo_manager,
60 stack_id,
61 dtos,
62 )
63 .context("creating document entities")
64}
65pub fn create_document_multi(
67 ctx: &AppContext,
68 stack_id: Option<u64>,
69 dtos: &[CreateDocumentDto],
70 owner_id: EntityId,
71 index: i32,
72) -> Result<Vec<DocumentDto>> {
73 let mut undo_redo_manager = ctx.undo_redo_manager.lock().unwrap();
74 document_controller::create_multi(
75 &ctx.db_context,
76 &ctx.event_hub,
77 &mut undo_redo_manager,
78 stack_id,
79 dtos,
80 owner_id,
81 index,
82 )
83 .context("creating document entities")
84}
85pub fn get_document(ctx: &AppContext, id: &EntityId) -> Result<Option<DocumentDto>> {
87 document_controller::get(&ctx.db_context, id).context("getting document")
88}
89
90pub fn get_document_multi(ctx: &AppContext, ids: &[EntityId]) -> Result<Vec<Option<DocumentDto>>> {
92 document_controller::get_multi(&ctx.db_context, ids).context("getting document entities")
93}
94
95pub fn get_all_document(ctx: &AppContext) -> Result<Vec<DocumentDto>> {
100 document_controller::get_all(&ctx.db_context).context("getting all document entities")
101}
102
103pub fn update_document(
105 ctx: &AppContext,
106 stack_id: Option<u64>,
107 dto: &UpdateDocumentDto,
108) -> Result<DocumentDto> {
109 let mut undo_redo_manager = ctx.undo_redo_manager.lock().unwrap();
110 document_controller::update(
111 &ctx.db_context,
112 &ctx.event_hub,
113 &mut undo_redo_manager,
114 stack_id,
115 dto,
116 )
117 .context("updating document")
118}
119
120pub fn update_document_multi(
122 ctx: &AppContext,
123 stack_id: Option<u64>,
124 dtos: &[UpdateDocumentDto],
125) -> Result<Vec<DocumentDto>> {
126 let mut undo_redo_manager = ctx.undo_redo_manager.lock().unwrap();
127 document_controller::update_multi(
128 &ctx.db_context,
129 &ctx.event_hub,
130 &mut undo_redo_manager,
131 stack_id,
132 dtos,
133 )
134 .context("updating document entities")
135}
136
137pub fn update_document_with_relationships(
139 ctx: &AppContext,
140 stack_id: Option<u64>,
141 dto: &DocumentDto,
142) -> Result<DocumentDto> {
143 let mut undo_redo_manager = ctx.undo_redo_manager.lock().unwrap();
144 document_controller::update_with_relationships(
145 &ctx.db_context,
146 &ctx.event_hub,
147 &mut undo_redo_manager,
148 stack_id,
149 dto,
150 )
151 .context("updating document with relationships")
152}
153
154pub fn update_document_with_relationships_multi(
156 ctx: &AppContext,
157 stack_id: Option<u64>,
158 dtos: &[DocumentDto],
159) -> Result<Vec<DocumentDto>> {
160 let mut undo_redo_manager = ctx.undo_redo_manager.lock().unwrap();
161 document_controller::update_with_relationships_multi(
162 &ctx.db_context,
163 &ctx.event_hub,
164 &mut undo_redo_manager,
165 stack_id,
166 dtos,
167 )
168 .context("updating document entities with relationships")
169}
170
171pub fn remove_document(ctx: &AppContext, stack_id: Option<u64>, id: &EntityId) -> Result<()> {
173 let mut undo_redo_manager = ctx.undo_redo_manager.lock().unwrap();
174 document_controller::remove(
175 &ctx.db_context,
176 &ctx.event_hub,
177 &mut undo_redo_manager,
178 stack_id,
179 id,
180 )
181 .context("removing document")
182}
183
184pub fn remove_document_multi(
186 ctx: &AppContext,
187 stack_id: Option<u64>,
188 ids: &[EntityId],
189) -> Result<()> {
190 let mut undo_redo_manager = ctx.undo_redo_manager.lock().unwrap();
191 document_controller::remove_multi(
192 &ctx.db_context,
193 &ctx.event_hub,
194 &mut undo_redo_manager,
195 stack_id,
196 ids,
197 )
198 .context("removing document entities")
199}
200
201pub fn get_document_relationship(
203 ctx: &AppContext,
204 id: &EntityId,
205 field: &DocumentRelationshipField,
206) -> Result<Vec<EntityId>> {
207 document_controller::get_relationship(&ctx.db_context, id, field)
208 .context("getting document relationship")
209}
210
211pub fn get_document_relationship_many(
213 ctx: &AppContext,
214 ids: &[EntityId],
215 field: &DocumentRelationshipField,
216) -> Result<std::collections::HashMap<EntityId, Vec<EntityId>>> {
217 document_controller::get_relationship_many(&ctx.db_context, ids, field)
218 .context("getting document relationships (many)")
219}
220
221pub fn get_document_relationship_count(
223 ctx: &AppContext,
224 id: &EntityId,
225 field: &DocumentRelationshipField,
226) -> Result<usize> {
227 document_controller::get_relationship_count(&ctx.db_context, id, field)
228 .context("getting document relationship count")
229}
230
231pub fn get_document_relationship_in_range(
233 ctx: &AppContext,
234 id: &EntityId,
235 field: &DocumentRelationshipField,
236 offset: usize,
237 limit: usize,
238) -> Result<Vec<EntityId>> {
239 document_controller::get_relationship_in_range(&ctx.db_context, id, field, offset, limit)
240 .context("getting document relationship range")
241}
242
243pub fn set_document_relationship(
245 ctx: &AppContext,
246 stack_id: Option<u64>,
247 dto: &DocumentRelationshipDto,
248) -> Result<()> {
249 let mut undo_redo_manager = ctx.undo_redo_manager.lock().unwrap();
250 document_controller::set_relationship(
251 &ctx.db_context,
252 &ctx.event_hub,
253 &mut undo_redo_manager,
254 stack_id,
255 dto,
256 )
257 .context("setting document relationship")
258}
259
260pub fn move_document_relationship(
262 ctx: &AppContext,
263 stack_id: Option<u64>,
264 id: &EntityId,
265 field: &DocumentRelationshipField,
266 ids_to_move: &[EntityId],
267 new_index: i32,
268) -> Result<Vec<EntityId>> {
269 let mut undo_redo_manager = ctx.undo_redo_manager.lock().unwrap();
270 document_controller::move_relationship(
271 &ctx.db_context,
272 &ctx.event_hub,
273 &mut undo_redo_manager,
274 stack_id,
275 id,
276 field,
277 ids_to_move,
278 new_index,
279 )
280 .context("moving document relationship")
281}