mirror of
				https://gitlab.com/comunic/comunicapiv3
				synced 2025-10-31 15:44:05 +00:00 
			
		
		
		
	Can delete associated surveys
This commit is contained in:
		| @@ -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::{comments_helper, database, friends_helper, groups_helper, likes_helper, user_helper}; | ||||
| use crate::helpers::{comments_helper, database, friends_helper, groups_helper, likes_helper, survey_helper, user_helper}; | ||||
| use crate::helpers::likes_helper::LikeType; | ||||
| use crate::utils::date_utils::{mysql_date, time}; | ||||
| use crate::utils::user_data_utils::user_data_path; | ||||
| @@ -422,6 +422,13 @@ pub fn delete(p: &Post) -> ResultBoxError { | ||||
|             } | ||||
|         } | ||||
|  | ||||
|         // Survey | ||||
|         PostKind::POST_KIND_SURVEY => { | ||||
|             if survey_helper::exists(p.id)? { | ||||
|                 survey_helper::delete(p.id)?; | ||||
|             } | ||||
|         } | ||||
|  | ||||
|         _ => { /* Nothing to be done */ } | ||||
|     } | ||||
|  | ||||
|   | ||||
| @@ -28,6 +28,23 @@ pub fn create(survey: &NewSurvey) -> ResultBoxError { | ||||
|     Ok(()) | ||||
| } | ||||
|  | ||||
| /// Delete the survey associated to a post | ||||
| pub fn delete(post_id: u64) -> ResultBoxError { | ||||
|     let survey_id = get_id(post_id)?; | ||||
|  | ||||
|     database::DeleteQuery::new(SURVEY_RESPONSE_TABLE) | ||||
|         .cond_u64("ID_sondage", survey_id) | ||||
|         .exec()?; | ||||
|  | ||||
|     database::DeleteQuery::new(SURVEY_CHOICES_TABLE) | ||||
|         .cond_u64("ID_sondage", survey_id) | ||||
|         .exec()?; | ||||
|  | ||||
|     database::DeleteQuery::new(SURVEY_INFO_TABLE) | ||||
|         .cond_u64("ID", survey_id) | ||||
|         .exec() | ||||
| } | ||||
|  | ||||
| /// Insert a new choice for a survey | ||||
| pub fn create_choice(survey_id: u64, choice: &str) -> ResultBoxError { | ||||
|     database::InsertQuery::new(SURVEY_CHOICES_TABLE) | ||||
| @@ -37,6 +54,14 @@ pub fn create_choice(survey_id: u64, choice: &str) -> ResultBoxError { | ||||
|         .insert_drop_result() | ||||
| } | ||||
|  | ||||
| /// Get the ID of a survey associated to a post | ||||
| pub fn get_id(post_id: u64) -> ResultBoxError<u64> { | ||||
|     database::QueryInfo::new(SURVEY_INFO_TABLE) | ||||
|         .cond_u64("ID_texte", post_id) | ||||
|         .add_field("ID") | ||||
|         .query_row(|r| r.get_u64("ID")) | ||||
| } | ||||
|  | ||||
| /// Get information about a survey | ||||
| pub fn get_info(post_id: u64) -> ResultBoxError<Survey> { | ||||
|     database::QueryInfo::new(SURVEY_INFO_TABLE) | ||||
| @@ -67,6 +92,14 @@ pub fn get_user_choice(survey_id: u64, user_id: &UserID) -> ResultBoxError<u64> | ||||
|         .unwrap_or(0)) | ||||
| } | ||||
|  | ||||
| /// Check out whether a survey exists for a post or not | ||||
| pub fn exists(post_id: u64) -> ResultBoxError<bool> { | ||||
|     database::QueryInfo::new(SURVEY_INFO_TABLE) | ||||
|         .cond_u64("ID_texte", post_id) | ||||
|         .exec_count() | ||||
|         .map(|r| r > 0) | ||||
| } | ||||
|  | ||||
| /// Turn a database entry into a row object | ||||
| fn db_to_survey(row: &database::RowResult) -> ResultBoxError<Survey> { | ||||
|     let survey_id = row.get_u64("ID")?; | ||||
|   | ||||
		Reference in New Issue
	
	Block a user