mirror of
				https://gitlab.com/comunic/comunicapiv3
				synced 2025-11-04 01:24:04 +00:00 
			
		
		
		
	Can check whether two users are friends or not
This commit is contained in:
		@@ -136,6 +136,17 @@ impl<'a> RowResult<'a> {
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    /// Find an integer included in the request
 | 
			
		||||
    pub fn get_usize(&self, name: &str) -> Result<usize, Box<dyn Error>> {
 | 
			
		||||
        let value = self.row.get_opt(self.find_col(name)?);
 | 
			
		||||
 | 
			
		||||
        match value {
 | 
			
		||||
            None => Err(ExecError::boxed_string(
 | 
			
		||||
                format!("Could not extract integer field {} !", name))),
 | 
			
		||||
            Some(s) => Ok(s?)
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    /// Find a string included in the request
 | 
			
		||||
    pub fn get_str(&self, name: &str) -> Result<String, Box<dyn Error>> {
 | 
			
		||||
        let value = self.row.get_opt(self.find_col(name)?);
 | 
			
		||||
@@ -245,6 +256,15 @@ pub fn query<E, F: Fn(&RowResult) -> ProcessRowResult<E>>(info: QueryInfo, proce
 | 
			
		||||
    Ok(res)
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
/// Count the number of results a query would have produced
 | 
			
		||||
pub fn count(mut q: QueryInfo) -> ResultBoxError<usize> {
 | 
			
		||||
    &q.fields.clear();
 | 
			
		||||
    &q.fields.push("COUNT(*) as count".to_string());
 | 
			
		||||
 | 
			
		||||
    query(q, |res| res.get_usize("count"))?.pop()
 | 
			
		||||
        .ok_or(ExecError::boxed_new("database::count did not return a result!"))
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
/// Structure used to execute a insert query
 | 
			
		||||
pub struct InsertQuery {
 | 
			
		||||
    pub table: String,
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										18
									
								
								src/helpers/friends_helper.rs
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										18
									
								
								src/helpers/friends_helper.rs
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,18 @@
 | 
			
		||||
//! # Friends helper
 | 
			
		||||
//!
 | 
			
		||||
//! @author Pierre Hubert
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
use crate::data::user::UserID;
 | 
			
		||||
use crate::data::error::ResultBoxError;
 | 
			
		||||
use crate::helpers::database;
 | 
			
		||||
use crate::constants::database_tables_names::FRIENDS_TABLE;
 | 
			
		||||
use crate::helpers::database::QueryInfo;
 | 
			
		||||
 | 
			
		||||
/// Check out whether two users are friend or not
 | 
			
		||||
pub fn are_friend(user_one: UserID, user_two: UserID) -> ResultBoxError<bool> {
 | 
			
		||||
    Ok(database::count(QueryInfo::new(FRIENDS_TABLE)
 | 
			
		||||
        .cond_i64("ID_personne", user_one)
 | 
			
		||||
        .cond_i64("ID_amis", user_two)
 | 
			
		||||
        .cond_i64("actif", 1))? > 0)
 | 
			
		||||
}
 | 
			
		||||
@@ -2,4 +2,5 @@ pub mod database;
 | 
			
		||||
 | 
			
		||||
pub mod api_helper;
 | 
			
		||||
pub mod account_helper;
 | 
			
		||||
pub mod user_helper;
 | 
			
		||||
pub mod user_helper;
 | 
			
		||||
pub mod friends_helper;
 | 
			
		||||
		Reference in New Issue
	
	Block a user