1
0
mirror of https://gitlab.com/comunic/comunicapiv3 synced 2024-11-22 21:39:21 +00:00

Start to delete posts

This commit is contained in:
Pierre HUBERT 2020-07-09 10:37:06 +02:00
parent bc8fdb13f1
commit af307671bb
3 changed files with 29 additions and 6 deletions

View File

@ -263,5 +263,9 @@ pub fn update_content(r: &mut HttpRequestHandler) -> RequestResult {
/// Delete a post /// Delete a post
pub fn delete(r: &mut HttpRequestHandler) -> RequestResult { pub fn delete(r: &mut HttpRequestHandler) -> RequestResult {
r.success("Implement me") let post = r.post_post_with_access("postID", PostAccessLevel::FULL_ACCESS)?;
posts_helper::delete(&post)?;
r.success("Post deleted.")
} }

View File

@ -2,20 +2,20 @@
//! //!
//! Module dedicated to likes management //! Module dedicated to likes management
use crate::data::error::ResultBoxError;
use crate::helpers::database::QueryInfo;
use crate::constants::database_tables_names::LIKES_TABLE; use crate::constants::database_tables_names::LIKES_TABLE;
use crate::data::error::ResultBoxError;
use crate::data::user::UserID; use crate::data::user::UserID;
use crate::helpers::database;
use crate::helpers::database::QueryInfo;
pub enum LikeType { pub enum LikeType {
USER, USER,
POST, POST,
COMMENT, COMMENT,
GROUP GROUP,
} }
impl LikeType { impl LikeType {
/// Get matching database type /// Get matching database type
pub fn to_db_type(&self) -> String { pub fn to_db_type(&self) -> String {
match self { match self {
@ -46,4 +46,12 @@ pub fn is_liking(user_id: &UserID, id: u64, kind: LikeType) -> ResultBoxError<bo
.cond_user_id("ID_personne", user_id) .cond_user_id("ID_personne", user_id)
.cond("type", kind.to_db_type().as_ref()) .cond("type", kind.to_db_type().as_ref())
.exec_count()? > 0) .exec_count()? > 0)
}
/// Delete all the likes associated with a post
pub fn delete_all(id: u64, kind: LikeType) -> ResultBoxError {
database::DeleteQuery::new(LIKES_TABLE)
.cond_u64("ID_type", id)
.cond_str("type", &kind.to_db_type())
.exec()
} }

View File

@ -11,7 +11,8 @@ use crate::data::group_member::GroupMembershipLevel;
use crate::data::post::{Post, PostAccessLevel, PostFile, PostKind, PostPageKind, PostVisibilityLevel, PostWebLink}; use crate::data::post::{Post, PostAccessLevel, PostFile, PostKind, PostPageKind, PostVisibilityLevel, PostWebLink};
use crate::data::post::PostKind::{POST_KIND_COUNTDOWN, POST_KIND_IMAGE, POST_KIND_MOVIE, POST_KIND_PDF, POST_KIND_SURVEY, POST_KIND_WEBLINK, POST_KIND_YOUTUBE}; use crate::data::post::PostKind::{POST_KIND_COUNTDOWN, POST_KIND_IMAGE, POST_KIND_MOVIE, POST_KIND_PDF, POST_KIND_SURVEY, POST_KIND_WEBLINK, POST_KIND_YOUTUBE};
use crate::data::user::UserID; use crate::data::user::UserID;
use crate::helpers::{database, friends_helper, groups_helper, user_helper}; use crate::helpers::{database, friends_helper, groups_helper, likes_helper, user_helper};
use crate::helpers::likes_helper::LikeType;
use crate::utils::date_utils::{mysql_date, time}; use crate::utils::date_utils::{mysql_date, time};
impl PostVisibilityLevel { impl PostVisibilityLevel {
@ -399,6 +400,16 @@ pub fn set_content(post_id: u64, new_content: &str) -> ResultBoxError {
.exec() .exec()
} }
/// Delete a post
pub fn delete(p: &Post) -> ResultBoxError {
// TODO : delete all the notifications related with the post
// Delete all the likes associated with the post
likes_helper::delete_all(p.id, LikeType::POST)?;
Ok(())
}
/// Turn a post into a database entry /// Turn a post into a database entry
fn db_to_post(res: &database::RowResult) -> ResultBoxError<Post> { fn db_to_post(res: &database::RowResult) -> ResultBoxError<Post> {
let user_id = if res.get_u64("ID_amis")? == 0 { let user_id = if res.get_u64("ID_amis")? == 0 {