mirror of
				https://gitlab.com/comunic/comunicapiv3
				synced 2025-11-04 01:24:04 +00:00 
			
		
		
		
	Get user custom emojies
This commit is contained in:
		
							
								
								
									
										26
									
								
								src/helpers/custom_emojies_helper.rs
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										26
									
								
								src/helpers/custom_emojies_helper.rs
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,26 @@
 | 
			
		||||
//! # Custom emojies helper
 | 
			
		||||
//!
 | 
			
		||||
//! @author Pierre Hubert
 | 
			
		||||
 | 
			
		||||
use crate::data::user::UserID;
 | 
			
		||||
use crate::data::error::ResultBoxError;
 | 
			
		||||
use crate::data::custom_emoji::CustomEmoji;
 | 
			
		||||
use crate::helpers::database;
 | 
			
		||||
use crate::constants::database_tables_names::EMOJIS_TABLE;
 | 
			
		||||
 | 
			
		||||
/// Get the list of emojies of a user
 | 
			
		||||
pub fn get_list_user(user_id: UserID) -> ResultBoxError<Vec<CustomEmoji>> {
 | 
			
		||||
    database::QueryInfo::new(EMOJIS_TABLE)
 | 
			
		||||
        .cond_i64("user_id", user_id)
 | 
			
		||||
        .exec(db_to_custom_emoji)
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
/// Turn a database entry into a [CustomEmoji]
 | 
			
		||||
fn db_to_custom_emoji(row: &database::RowResult) -> ResultBoxError<CustomEmoji> {
 | 
			
		||||
    Ok(CustomEmoji {
 | 
			
		||||
        id: row.get_u64("id")?,
 | 
			
		||||
        user_id: row.get_int64("user_id")?,
 | 
			
		||||
        shortcut: row.get_str("shortcut")?,
 | 
			
		||||
        path: row.get_str("path")?
 | 
			
		||||
    })
 | 
			
		||||
}
 | 
			
		||||
@@ -86,6 +86,11 @@ impl QueryInfo {
 | 
			
		||||
        self
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    pub fn cond_u64(mut self, key: &str, val: u64) -> QueryInfo {
 | 
			
		||||
        self.conditions.insert(key.to_string(), val.to_string());
 | 
			
		||||
        self
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    pub fn cond_i64(mut self, key: &str, val: i64) -> QueryInfo {
 | 
			
		||||
        self.conditions.insert(key.to_string(), val.to_string());
 | 
			
		||||
        self
 | 
			
		||||
@@ -96,6 +101,12 @@ impl QueryInfo {
 | 
			
		||||
        self.fields.push(key.to_string());
 | 
			
		||||
        self
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    /// Execute query
 | 
			
		||||
    pub fn exec<E, F: Fn(&RowResult) -> ProcessRowResult<E>>(self, process_function: F)
 | 
			
		||||
                                                             -> Result<Vec<E>, Box<dyn Error>> {
 | 
			
		||||
        query(self, process_function)
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
/// Struct used to read the result of a request
 | 
			
		||||
@@ -136,6 +147,17 @@ impl<'a> RowResult<'a> {
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    /// Find an integer included in the request
 | 
			
		||||
    pub fn get_u64(&self, name: &str) -> Result<u64, 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 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)?);
 | 
			
		||||
 
 | 
			
		||||
@@ -3,4 +3,5 @@ pub mod database;
 | 
			
		||||
pub mod api_helper;
 | 
			
		||||
pub mod account_helper;
 | 
			
		||||
pub mod user_helper;
 | 
			
		||||
pub mod friends_helper;
 | 
			
		||||
pub mod friends_helper;
 | 
			
		||||
pub mod custom_emojies_helper;
 | 
			
		||||
		Reference in New Issue
	
	Block a user