mirror of
				https://gitlab.com/comunic/comunicapiv3
				synced 2025-10-30 23:24:42 +00:00 
			
		
		
		
	Delete the comments associated to a post
This commit is contained in:
		| @@ -5,7 +5,9 @@ | ||||
| use crate::constants::database_tables_names::COMMENTS_TABLE; | ||||
| use crate::data::comment::Comment; | ||||
| use crate::data::error::ResultBoxError; | ||||
| use crate::helpers::database; | ||||
| use crate::helpers::{database, likes_helper}; | ||||
| use crate::helpers::likes_helper::LikeType; | ||||
| use crate::utils::user_data_utils::user_data_path; | ||||
|  | ||||
| /// Get the comments of a post | ||||
| pub fn get(post_id: u64) -> ResultBoxError<Vec<Comment>> { | ||||
| @@ -26,4 +28,34 @@ fn db_to_comment(row: &database::RowResult) -> ResultBoxError<Comment> { | ||||
|         content: row.get_str("commentaire")?, | ||||
|         image_path: row.get_optional_str("image_commentaire")?, | ||||
|     }) | ||||
| } | ||||
|  | ||||
| /// Delete a single comment | ||||
| pub fn delete(c: &Comment) -> ResultBoxError { | ||||
|     // Delete associated image (if any) | ||||
|     if let Some(image) = &c.image_path { | ||||
|         let path = user_data_path(image.as_ref()); | ||||
|         if path.exists() { | ||||
|             std::fs::remove_file(&path)?; | ||||
|         } | ||||
|     } | ||||
|  | ||||
|     // Remove the likes associated with the comment | ||||
|     likes_helper::delete_all(c.id, LikeType::COMMENT)?; | ||||
|  | ||||
|     // Remove the comment from the database | ||||
|     database::DeleteQuery::new(COMMENTS_TABLE) | ||||
|         .cond_u64("ID", c.id) | ||||
|         .exec()?; | ||||
|  | ||||
|     Ok(()) | ||||
| } | ||||
|  | ||||
| /// Delete all the comments associated to a post | ||||
| pub fn delete_all(post_id: u64) -> ResultBoxError { | ||||
|     for c in &get(post_id)? { | ||||
|         delete(c)?; | ||||
|     } | ||||
|  | ||||
|     Ok(()) | ||||
| } | ||||
| @@ -11,7 +11,7 @@ use crate::data::group_member::GroupMembershipLevel; | ||||
| 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::user::UserID; | ||||
| use crate::helpers::{database, friends_helper, groups_helper, likes_helper, user_helper}; | ||||
| use crate::helpers::{database, friends_helper, groups_helper, likes_helper, user_helper, comments_helper}; | ||||
| use crate::helpers::likes_helper::LikeType; | ||||
| use crate::utils::date_utils::{mysql_date, time}; | ||||
|  | ||||
| @@ -407,6 +407,9 @@ pub fn delete(p: &Post) -> ResultBoxError { | ||||
|     // Delete all the likes associated with the post | ||||
|     likes_helper::delete_all(p.id, LikeType::POST)?; | ||||
|  | ||||
|     // Delete all the comments associated to the post | ||||
|     comments_helper::delete_all(p.id)?; | ||||
|  | ||||
|     Ok(()) | ||||
| } | ||||
|  | ||||
|   | ||||
		Reference in New Issue
	
	Block a user