This commit is contained in:
2026-08-02 10:13:49 +02:00
parent ba51dde1c2
commit 9dbb7ffd5b
9 changed files with 558 additions and 108 deletions
+2 -25
View File
@@ -1,9 +1,6 @@
use crate::models::server_item_order;
use crate::models::server_item_order::OrderedResourceType;
use crate::repositories::{AnyResult, RepositoryContext};
use sea_orm::{
ActiveModelTrait, ColumnTrait, EntityTrait, QueryFilter, QueryOrder, TransactionTrait,
};
use sea_orm::{ColumnTrait, EntityTrait, QueryFilter, QueryOrder};
use std::sync::Arc;
use uuid::Uuid;
@@ -17,29 +14,9 @@ impl ServerItemOrderRepository {
pub async fn get_by_server(&self, server_id: Uuid) -> AnyResult<Vec<server_item_order::Model>> {
Ok(server_item_order::Entity::find()
.filter(server_item_order::Column::ServerId.eq(server_id))
.order_by_asc(server_item_order::Column::ParentCategoryId)
.order_by_asc(server_item_order::Column::OrderKey)
.all(&self.context.db)
.await?)
}
/// Réorganise en bloc (reorder) une liste d'éléments dans un serveur ou une catégorie
pub async fn update_orders(
&self,
server_id: Uuid,
items: Vec<(Uuid, OrderedResourceType, Option<Uuid>, i64)>, // (resource_id, resource_type, parent_category_id, order_key)
) -> AnyResult<()> {
self.context
.db
.transaction::<_, (), anyhow::Error>(|txn| {
Box::pin(async move {
for (resource_id, res_type, parent_cat_id, order_key) in items {
// Logique de mise à jour / upsert des order_key
}
Ok(())
})
})
.await?;
Ok(())
}
}