Skip to content
Snippets Groups Projects
relations.rs 2.28 KiB
Newer Older
  • Learn to ignore specific revisions
  • use ruma::api::client::relations::{
    
    	get_relating_events, get_relating_events_with_rel_type, get_relating_events_with_rel_type_and_event_type,
    
    use crate::{services, Result, Ruma};
    
    
    /// # `GET /_matrix/client/r0/rooms/{roomId}/relations/{eventId}/{relType}/{eventType}`
    pub async fn get_relating_events_with_rel_type_and_event_type_route(
    
    	body: Ruma<get_relating_events_with_rel_type_and_event_type::v1::Request>,
    
    ) -> Result<get_relating_events_with_rel_type_and_event_type::v1::Response> {
    
    	let sender_user = body.sender_user.as_ref().expect("user is authenticated");
    
    
    🥺's avatar
    🥺 committed
    	let res = services()
    		.rooms
    		.pdu_metadata
    		.paginate_relations_with_filter(
    			sender_user,
    			&body.room_id,
    			&body.event_id,
    			&Some(body.event_type.clone()),
    			&Some(body.rel_type.clone()),
    
    			&body.from,
    			&body.to,
    			&body.limit,
    			body.recurse,
    
    🥺's avatar
    🥺 committed
    			body.dir,
    
    🥺's avatar
    🥺 committed
    		)?;
    
    
    	Ok(get_relating_events_with_rel_type_and_event_type::v1::Response {
    		chunk: res.chunk,
    		next_batch: res.next_batch,
    		prev_batch: res.prev_batch,
    
    		recursion_depth: res.recursion_depth,
    
    }
    
    /// # `GET /_matrix/client/r0/rooms/{roomId}/relations/{eventId}/{relType}`
    pub async fn get_relating_events_with_rel_type_route(
    
    	body: Ruma<get_relating_events_with_rel_type::v1::Request>,
    
    ) -> Result<get_relating_events_with_rel_type::v1::Response> {
    
    	let sender_user = body.sender_user.as_ref().expect("user is authenticated");
    
    
    🥺's avatar
    🥺 committed
    	let res = services()
    		.rooms
    		.pdu_metadata
    		.paginate_relations_with_filter(
    			sender_user,
    			&body.room_id,
    			&body.event_id,
    			&None,
    			&Some(body.rel_type.clone()),
    
    			&body.from,
    			&body.to,
    			&body.limit,
    			body.recurse,
    
    🥺's avatar
    🥺 committed
    			body.dir,
    
    🥺's avatar
    🥺 committed
    		)?;
    
    
    	Ok(get_relating_events_with_rel_type::v1::Response {
    		chunk: res.chunk,
    		next_batch: res.next_batch,
    		prev_batch: res.prev_batch,
    
    		recursion_depth: res.recursion_depth,
    
    }
    
    /// # `GET /_matrix/client/r0/rooms/{roomId}/relations/{eventId}`
    
    pub async fn get_relating_events_route(
    
    	body: Ruma<get_relating_events::v1::Request>,
    
    ) -> Result<get_relating_events::v1::Response> {
    
    	let sender_user = body.sender_user.as_ref().expect("user is authenticated");
    
    
    🥺's avatar
    🥺 committed
    	services()
    		.rooms
    		.pdu_metadata
    
    🥺's avatar
    🥺 committed
    		.paginate_relations_with_filter(
    			sender_user,
    			&body.room_id,
    			&body.event_id,
    			&None,
    			&None,
    
    			&body.from,
    			&body.to,
    			&body.limit,
    			body.recurse,
    
    🥺's avatar
    🥺 committed
    			body.dir,
    		)