//! Module de compatibilité pour room_enhanced
//! 
//! Ce module fait le pont avec le nouveau module channels pour maintenir
//! la compatibilité avec l'ancien code qui référençait room_enhanced

use uuid::Uuid;
use crate::error::Result;
use crate::hub::{ChatHub, channels};


/// Fonction de compatibilité pour envoyer un message dans un salon
pub async fn send_room_message(
    hub: &ChatHub,
    room_id: Uuid,
    user_id: Uuid,
    username: &str,
    content: &str,
    parent_id: Option<Uuid>,
) -> Result<String> {
    // Délégation vers le nouveau module channels
    let result = channels::send_room_message(hub, room_id, user_id, username, content, parent_id, None).await?;
    Ok(result.to_string())
}

/// Fonction de compatibilité pour récupérer l'historique d'un salon
pub async fn fetch_room_history(
    hub: &ChatHub,
    room_id: Uuid,
    user_id: Uuid,
    limit: i32,
    before_id: Option<Uuid>,
) -> Result<Vec<channels::RoomMessage>> {
    channels::fetch_room_history(hub, room_id, user_id, limit as i64, before_id).await
}

/// Fonction de compatibilité pour récupérer les messages épinglés
pub async fn fetch_pinned_messages(
    hub: &ChatHub,
    room_id: Uuid,
    user_id: Uuid,
) -> Result<Vec<channels::RoomMessage>> {
    channels::fetch_pinned_messages(hub, room_id, user_id).await
}

/// Fonction de compatibilité pour créer un salon
pub async fn create_room(
    hub: &ChatHub,
    room_name: &str,
    creator_id: Uuid,
    description: Option<&str>,
) -> Result<Uuid> {
    let result = channels::create_room(hub, creator_id, room_name, description, true, None).await?;
    Ok(result.id)
}

/// Fonction de compatibilité pour rejoindre un salon
pub async fn join_room(
    hub: &ChatHub,
    room_id: Uuid,
    user_id: Uuid,
) -> Result<()> {
    channels::join_room(hub, room_id, user_id).await
}

/// Fonction de compatibilité pour quitter un salon
pub async fn leave_room(
    hub: &ChatHub,
    room_id: Uuid,
    user_id: Uuid,
) -> Result<()> {
    channels::leave_room(hub, room_id, user_id).await
}

/// Fonction de compatibilité pour obtenir les statistiques d'un salon
pub async fn get_room_stats(
    hub: &ChatHub,
    room_id: Uuid,
) -> Result<channels::RoomStats> {
    channels::get_room_stats(hub, room_id).await
}

/// Fonction de compatibilité pour lister les membres d'un salon
pub async fn list_room_members(
    hub: &ChatHub,
    room_id: Uuid,
    requesting_user_id: Uuid,
) -> Result<Vec<channels::RoomMember>> {
    channels::list_room_members(hub, room_id, requesting_user_id).await
} 