qleany 1.7.2

Architecture generator for Rust and C++/Qt applications.
// Generated by Qleany v1.7.0 from frontend_entity_commands.tera

//! File entity commands
#![allow(unused_imports, dead_code)]

use crate::app_context::AppContext;
use anyhow::{Context, Result};
use common::direct_access::file::FileRelationshipField;
use common::types::EntityId;
use direct_access::FileRelationshipDto;
use direct_access::{CreateFileDto, FileDto, UpdateFileDto, file_controller};

/// Create a new file entity (orphan, no parent)
pub fn create_orphan_file(ctx: &AppContext, dto: &CreateFileDto) -> Result<FileDto> {
    file_controller::create_orphan(&ctx.db_context, &ctx.event_hub, dto).context("creating file")
}
/// Create a new file entity as child of owner
pub fn create_file(
    ctx: &AppContext,

    dto: &CreateFileDto,
    owner_id: EntityId,
    index: i32,
) -> Result<FileDto> {
    file_controller::create(&ctx.db_context, &ctx.event_hub, dto, owner_id, index)
        .context("creating file")
}
/// Create multiple file entities (orphan, no parent)
pub fn create_orphan_file_multi(ctx: &AppContext, dtos: &[CreateFileDto]) -> Result<Vec<FileDto>> {
    file_controller::create_orphan_multi(&ctx.db_context, &ctx.event_hub, dtos)
        .context("creating file entities")
}
/// Create multiple file entities as children of owner
pub fn create_file_multi(
    ctx: &AppContext,

    dtos: &[CreateFileDto],
    owner_id: EntityId,
    index: i32,
) -> Result<Vec<FileDto>> {
    file_controller::create_multi(&ctx.db_context, &ctx.event_hub, dtos, owner_id, index)
        .context("creating file entities")
}
/// Get a file entity by ID
pub fn get_file(ctx: &AppContext, id: &EntityId) -> Result<Option<FileDto>> {
    file_controller::get(&ctx.db_context, id).context("getting file")
}

/// Get multiple file entities by IDs
pub fn get_file_multi(ctx: &AppContext, ids: &[EntityId]) -> Result<Vec<Option<FileDto>>> {
    file_controller::get_multi(&ctx.db_context, ids).context("getting file entities")
}

/// Get all file entities.
/// Note: returns entities in database key order (by EntityId), not insertion order
/// or any user-defined sort. For ordered collections, use relationship-based
/// retrieval (e.g. get_*_relationship for ordered_one_to_many fields).
pub fn get_all_file(ctx: &AppContext) -> Result<Vec<FileDto>> {
    file_controller::get_all(&ctx.db_context).context("getting all file entities")
}

/// Update a file entity
pub fn update_file(ctx: &AppContext, dto: &UpdateFileDto) -> Result<FileDto> {
    file_controller::update(&ctx.db_context, &ctx.event_hub, dto).context("updating file")
}

/// Update multiple file entities
pub fn update_file_multi(ctx: &AppContext, dtos: &[UpdateFileDto]) -> Result<Vec<FileDto>> {
    file_controller::update_multi(&ctx.db_context, &ctx.event_hub, dtos)
        .context("updating file entities")
}

/// Update a file entity with relationships
pub fn update_file_with_relationships(ctx: &AppContext, dto: &FileDto) -> Result<FileDto> {
    file_controller::update_with_relationships(&ctx.db_context, &ctx.event_hub, dto)
        .context("updating file with relationships")
}

/// Update multiple file entities with relationships
pub fn update_file_with_relationships_multi(
    ctx: &AppContext,

    dtos: &[FileDto],
) -> Result<Vec<FileDto>> {
    file_controller::update_with_relationships_multi(&ctx.db_context, &ctx.event_hub, dtos)
        .context("updating file entities with relationships")
}

/// Remove a file entity by ID
pub fn remove_file(ctx: &AppContext, id: &EntityId) -> Result<()> {
    file_controller::remove(&ctx.db_context, &ctx.event_hub, id).context("removing file")
}

/// Remove multiple file entities by IDs
pub fn remove_file_multi(ctx: &AppContext, ids: &[EntityId]) -> Result<()> {
    file_controller::remove_multi(&ctx.db_context, &ctx.event_hub, ids)
        .context("removing file entities")
}

/// Get a file relationship
pub fn get_file_relationship(
    ctx: &AppContext,
    id: &EntityId,
    field: &FileRelationshipField,
) -> Result<Vec<EntityId>> {
    file_controller::get_relationship(&ctx.db_context, id, field)
        .context("getting file relationship")
}

/// Get relationship IDs for multiple file entities at once
pub fn get_file_relationship_many(
    ctx: &AppContext,
    ids: &[EntityId],
    field: &FileRelationshipField,
) -> Result<std::collections::HashMap<EntityId, Vec<EntityId>>> {
    file_controller::get_relationship_many(&ctx.db_context, ids, field)
        .context("getting file relationships (many)")
}

/// Get relationship count for a file entity
pub fn get_file_relationship_count(
    ctx: &AppContext,
    id: &EntityId,
    field: &FileRelationshipField,
) -> Result<usize> {
    file_controller::get_relationship_count(&ctx.db_context, id, field)
        .context("getting file relationship count")
}

/// Get relationship IDs for a file entity with pagination
pub fn get_file_relationship_in_range(
    ctx: &AppContext,
    id: &EntityId,
    field: &FileRelationshipField,
    offset: usize,
    limit: usize,
) -> Result<Vec<EntityId>> {
    file_controller::get_relationship_in_range(&ctx.db_context, id, field, offset, limit)
        .context("getting file relationship range")
}

/// Set a file relationship
pub fn set_file_relationship(ctx: &AppContext, dto: &FileRelationshipDto) -> Result<()> {
    file_controller::set_relationship(&ctx.db_context, &ctx.event_hub, dto)
        .context("setting file relationship")
}

/// Move (reorder) IDs within a file relationship
pub fn move_file_relationship(
    ctx: &AppContext,

    id: &EntityId,
    field: &FileRelationshipField,
    ids_to_move: &[EntityId],
    new_index: i32,
) -> Result<Vec<EntityId>> {
    file_controller::move_relationship(
        &ctx.db_context,
        &ctx.event_hub,
        id,
        field,
        ids_to_move,
        new_index,
    )
    .context("moving file relationship")
}