use crate::AgentError; use models::Expr; use models::rooms::room_message::{ Column as RmCol, Entity as RoomMessage, Model as RoomMessageModel, }; use sea_orm::*; impl super::CompactService { pub async fn fetch_room_messages_secure( &self, room_id: uuid::Uuid, requester_id: uuid::Uuid, ) -> Result, AgentError> { use models::rooms::{RoomAccess, RoomUserState}; RoomMessage::find() .filter(RmCol::Room.eq(room_id)) .filter( Condition::any() .add(Expr::exists( RoomUserState::find() .filter(models::rooms::room_user_state::Column::Room.eq(room_id)) .filter(models::rooms::room_user_state::Column::User.eq(requester_id)) .into_query(), )) .add(Expr::exists( RoomAccess::find() .filter(models::rooms::room_access::Column::Room.eq(room_id)) .filter(models::rooms::room_access::Column::User.eq(requester_id)) .into_query(), )), ) .order_by_asc(RmCol::Seq) .limit(10000) .all(&self.db) .await .map_err(|e| AgentError::Internal(e.to_string())) } }