1
0
mirror of https://gitlab.com/comunic/comunicapiv3 synced 2024-11-30 01:06:27 +00:00

Count the number of likes of a user

This commit is contained in:
Pierre HUBERT 2020-06-01 10:17:32 +02:00
parent a5dab7e312
commit cef5838ef4
4 changed files with 44 additions and 2 deletions

View File

@ -4,11 +4,12 @@
use serde::Serialize; use serde::Serialize;
use crate::data::user::{User, UserPageStatus, UserID}; use crate::data::user::{User, UserPageStatus, UserID};
use crate::helpers::{friends_helper, custom_emojies_helper, background_image_helper}; use crate::helpers::{friends_helper, custom_emojies_helper, background_image_helper, likes_helper};
use crate::data::error::ResultBoxError; use crate::data::error::ResultBoxError;
use crate::utils::user_data_utils::user_data_url; use crate::utils::user_data_utils::user_data_url;
use crate::data::user::AccountImageVisibility::{EVERYONE, COMUNIC_USERS}; use crate::data::user::AccountImageVisibility::{EVERYONE, COMUNIC_USERS};
use crate::api_data::custom_emoji::CustomEmojiAPI; use crate::api_data::custom_emoji::CustomEmojiAPI;
use crate::helpers::likes_helper::LikeType;
#[derive(Serialize)] #[derive(Serialize)]
#[allow(non_snake_case)] #[allow(non_snake_case)]
@ -37,6 +38,7 @@ struct APIAdvancedInfo {
account_creation_time: u64, account_creation_time: u64,
backgroundImage: String, backgroundImage: String,
number_friends: usize, number_friends: usize,
pageLikes: usize,
} }
impl APIUserInfo { impl APIUserInfo {
@ -80,6 +82,7 @@ impl APIUserInfo {
account_creation_time: info.account_creation_time, account_creation_time: info.account_creation_time,
backgroundImage: background_image_helper::get_url(info.id), backgroundImage: background_image_helper::get_url(info.id),
number_friends, number_friends,
pageLikes: likes_helper::count(info.id as u64, LikeType::USER)?,
}); });
Ok(user) Ok(user)

View File

@ -20,6 +20,9 @@ pub mod database_tables_names {
/// Custom emojis table /// Custom emojis table
pub const EMOJIS_TABLE: &str = "comunic_custom_emojis"; pub const EMOJIS_TABLE: &str = "comunic_custom_emojis";
/// Likes table
pub const LIKES_TABLE: &str = "aime";
} }
/// The account image to show for user who do not have any /// The account image to show for user who do not have any

View File

@ -0,0 +1,35 @@
//! # Likes helper
//!
//! Module dedicated to likes management
use crate::data::error::ResultBoxError;
use crate::helpers::database::QueryInfo;
use crate::constants::database_tables_names::LIKES_TABLE;
pub enum LikeType {
USER,
POST,
COMMENT,
GROUP
}
impl LikeType {
/// Get matching database type
pub fn to_db_type(&self) -> String {
match self {
LikeType::USER => "page".to_string(),
LikeType::POST => "texte".to_string(),
LikeType::COMMENT => "commentaire".to_string(),
LikeType::GROUP => "group".to_string(),
}
}
}
/// Count the number of likes over an element
pub fn count(id: u64, kind: LikeType) -> ResultBoxError<usize> {
QueryInfo::new(LIKES_TABLE)
.cond_u64("ID_type", id)
.cond("type", kind.to_db_type().as_ref())
.exec_count()
}

View File

@ -6,3 +6,4 @@ pub mod user_helper;
pub mod friends_helper; pub mod friends_helper;
pub mod custom_emojies_helper; pub mod custom_emojies_helper;
pub mod background_image_helper; pub mod background_image_helper;
pub mod likes_helper;