mirror of
				https://gitlab.com/comunic/comunicapiv3
				synced 2025-11-04 01:24:04 +00:00 
			
		
		
		
	Can delete permanently a conversation
This commit is contained in:
		@@ -8,11 +8,11 @@ use crate::data::conversation_message::ConversationMessage;
 | 
				
			|||||||
use crate::data::error::{ExecError, ResultBoxError};
 | 
					use crate::data::error::{ExecError, ResultBoxError};
 | 
				
			||||||
use crate::data::new_conversation::NewConversation;
 | 
					use crate::data::new_conversation::NewConversation;
 | 
				
			||||||
use crate::data::new_conversation_message::NewConversationMessage;
 | 
					use crate::data::new_conversation_message::NewConversationMessage;
 | 
				
			||||||
 | 
					use crate::data::unread_conversation::UnreadConversation;
 | 
				
			||||||
use crate::data::user::UserID;
 | 
					use crate::data::user::UserID;
 | 
				
			||||||
use crate::helpers::database;
 | 
					use crate::helpers::database;
 | 
				
			||||||
use crate::helpers::database::InsertQuery;
 | 
					use crate::helpers::database::InsertQuery;
 | 
				
			||||||
use crate::utils::date_utils::time;
 | 
					use crate::utils::date_utils::time;
 | 
				
			||||||
use crate::data::unread_conversation::UnreadConversation;
 | 
					 | 
				
			||||||
use crate::utils::user_data_utils::user_data_path;
 | 
					use crate::utils::user_data_utils::user_data_path;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/// Create a new conversation. This method returns the ID of the created conversation
 | 
					/// Create a new conversation. This method returns the ID of the created conversation
 | 
				
			||||||
@@ -253,6 +253,13 @@ pub fn get_user_messages_for_conversations(conv_id: u64, user_id: UserID) -> Res
 | 
				
			|||||||
        .exec(db_to_conversation_message)
 | 
					        .exec(db_to_conversation_message)
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/// Get the entire list of messages of a given conversation
 | 
				
			||||||
 | 
					pub fn get_all_messages(conv_id: u64) -> ResultBoxError<Vec<ConversationMessage>> {
 | 
				
			||||||
 | 
					    database::QueryInfo::new(CONV_MESSAGES_TABLE)
 | 
				
			||||||
 | 
					        .cond_u64("conv_id", conv_id)
 | 
				
			||||||
 | 
					        .exec(db_to_conversation_message)
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/// Send a new conversation message
 | 
					/// Send a new conversation message
 | 
				
			||||||
pub fn send_message(msg: &NewConversationMessage) -> ResultBoxError<()> {
 | 
					pub fn send_message(msg: &NewConversationMessage) -> ResultBoxError<()> {
 | 
				
			||||||
    let t = time();
 | 
					    let t = time();
 | 
				
			||||||
@@ -349,12 +356,32 @@ pub fn mark_user_seen(conv_id: u64, user_id: UserID) -> ResultBoxError<()> {
 | 
				
			|||||||
/// Remove a user from a conversation
 | 
					/// Remove a user from a conversation
 | 
				
			||||||
pub fn remove_user_from_conversation(user_id: UserID, conv_id: u64) -> ResultBoxError<()> {
 | 
					pub fn remove_user_from_conversation(user_id: UserID, conv_id: u64) -> ResultBoxError<()> {
 | 
				
			||||||
    if is_user_moderator(user_id, conv_id)? {
 | 
					    if is_user_moderator(user_id, conv_id)? {
 | 
				
			||||||
        unimplemented!()
 | 
					        delete_conversation(conv_id)
 | 
				
			||||||
    } else {
 | 
					    } else {
 | 
				
			||||||
        delete_member(user_id, conv_id)
 | 
					        delete_member(user_id, conv_id)
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/// Remove permanently a conversation
 | 
				
			||||||
 | 
					pub fn delete_conversation(conv_id: u64) -> ResultBoxError<()> {
 | 
				
			||||||
 | 
					    // Delete all the messages of the conversations
 | 
				
			||||||
 | 
					    for message in get_all_messages(conv_id)? {
 | 
				
			||||||
 | 
					        delete_message(&message)?;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    // Delete all the members of the conversation
 | 
				
			||||||
 | 
					    database::DeleteQuery::new(CONV_USERS_TABLE)
 | 
				
			||||||
 | 
					        .cond_u64("conv_id", conv_id)
 | 
				
			||||||
 | 
					        .exec()?;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    // Delete the conversation entry itself
 | 
				
			||||||
 | 
					    database::DeleteQuery::new(CONV_LIST_TABLE)
 | 
				
			||||||
 | 
					        .cond_u64("id", conv_id)
 | 
				
			||||||
 | 
					        .exec()?;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    Ok(())
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/// Delete a conversation membership
 | 
					/// Delete a conversation membership
 | 
				
			||||||
pub fn delete_member(user_id: UserID, conv_id: u64) -> ResultBoxError<()> {
 | 
					pub fn delete_member(user_id: UserID, conv_id: u64) -> ResultBoxError<()> {
 | 
				
			||||||
    for msg in get_user_messages_for_conversations(conv_id, user_id)? {
 | 
					    for msg in get_user_messages_for_conversations(conv_id, user_id)? {
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user