mirror of
https://gitlab.com/comunic/comunicapiv3
synced 2024-11-22 21:39:21 +00:00
Can delete associated surveys
This commit is contained in:
parent
409f5a8feb
commit
82adbbcd6d
@ -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")?;
|
||||
|
Loading…
Reference in New Issue
Block a user