Skip to main content

text_document_frontend/commands/
document_commands.rs

1// Generated by Qleany v1.5.0 from frontend_entity_commands.tera
2
3//! Document entity commands
4#![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
13/// Create a new document entity (orphan, no parent)
14pub 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}
29/// Create a new document entity as child of owner
30pub 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}
49/// Create multiple document entities (orphan, no parent)
50pub 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}
65/// Create multiple document entities as children of owner
66pub 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}
85/// Get a document entity by ID
86pub fn get_document(ctx: &AppContext, id: &EntityId) -> Result<Option<DocumentDto>> {
87    document_controller::get(&ctx.db_context, id).context("getting document")
88}
89
90/// Get multiple document entities by IDs
91pub 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
95/// Get all document entities.
96/// Note: returns entities in database key order (by EntityId), not insertion order
97/// or any user-defined sort. For ordered collections, use relationship-based
98/// retrieval (e.g. get_*_relationship for ordered_one_to_many fields).
99pub fn get_all_document(ctx: &AppContext) -> Result<Vec<DocumentDto>> {
100    document_controller::get_all(&ctx.db_context).context("getting all document entities")
101}
102
103/// Update a document entity
104pub 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
120/// Update multiple document entities
121pub 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
137/// Update a document entity with relationships
138pub 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
154/// Update multiple document entities with relationships
155pub 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
171/// Remove a document entity by ID
172pub 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
184/// Remove multiple document entities by IDs
185pub 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
201/// Get a document relationship
202pub 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
211/// Get relationship IDs for multiple document entities at once
212pub 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
221/// Get relationship count for a document entity
222pub 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
231/// Get relationship IDs for a document entity with pagination
232pub 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
243/// Set a document relationship
244pub 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
260/// Move (reorder) IDs within a document relationship
261pub 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}