mirror of
https://gitlab.com/comunic/comunicapiv3
synced 2025-02-08 02:07:04 +00:00
35 lines
866 B
Rust
35 lines
866 B
Rust
|
//! # 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()
|
||
|
}
|