1
0
mirror of https://gitlab.com/comunic/comunicapiv3 synced 2024-11-26 15:29:21 +00:00

Can delete all the posts associated to a movie

This commit is contained in:
Pierre HUBERT 2020-07-12 14:20:24 +02:00
parent ead879bc21
commit 2cc8e7da04
3 changed files with 32 additions and 4 deletions

View File

@ -4,7 +4,6 @@
use crate::api_data::movie_api::MovieAPI;
use crate::controllers::routes::RequestResult;
use crate::data::error::ExecError;
use crate::data::http_request_handler::HttpRequestHandler;
use crate::helpers::movies_helper;
@ -17,6 +16,9 @@ pub fn get_list(r: &mut HttpRequestHandler) -> RequestResult {
/// Remove a movie
pub fn delete(r: &mut HttpRequestHandler) -> RequestResult {
// TODO : implement method
r.internal_error(ExecError::boxed_new("Unimplemented method!"))
let movie_id = r.post_movie_id("movieID")?;
movies_helper::delete(&movies_helper::get_info(movie_id)?)?;
r.success("Movie deleted.")
}

View File

@ -6,7 +6,7 @@ use crate::constants::database_tables_names::MOVIES_TABLE;
use crate::data::error::ResultBoxError;
use crate::data::movie::Movie;
use crate::data::user::UserID;
use crate::helpers::database;
use crate::helpers::{database, posts_helper};
/// Get the list of movies of the current
pub fn get_list_user(user_id: &UserID) -> ResultBoxError<Vec<Movie>> {
@ -28,6 +28,15 @@ pub fn does_user_has(user_id: &UserID, movie_id: u64) -> ResultBoxError<bool> {
Ok(get_info(movie_id).map(|m| &m.user_id == user_id).unwrap_or(false))
}
/// Remove permanently a movie from the database
pub fn delete(movie: &Movie) -> ResultBoxError {
posts_helper::delete_all_with_movie(movie)?;
// TODO : continue implementation
Ok(())
}
/// Turn a database entry into a movie object
fn db_to_movie(row: &database::RowResult) -> ResultBoxError<Movie> {
Ok(Movie {

View File

@ -8,6 +8,7 @@ use crate::constants::database_tables_names::POSTS_TABLE;
use crate::data::error::{ExecError, ResultBoxError};
use crate::data::group_id::GroupID;
use crate::data::group_member::GroupMembershipLevel;
use crate::data::movie::Movie;
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;
@ -440,6 +441,22 @@ pub fn delete(p: &Post) -> ResultBoxError {
Ok(())
}
/// Get all the posts that use of movie
pub fn get_posts_for_movie(m: &Movie) -> ResultBoxError<Vec<Post>> {
database::QueryInfo::new(POSTS_TABLE)
.cond_u64("idvideo", m.id)
.exec(db_to_post)
}
/// Delete all the posts associated with a movie
pub fn delete_all_with_movie(m: &Movie) -> ResultBoxError {
for post in get_posts_for_movie(m)? {
delete(&post)?;
}
Ok(())
}
/// Turn a post into a database entry
fn db_to_post(res: &database::RowResult) -> ResultBoxError<Post> {
let user_id = if res.get_u64("ID_amis")? == 0 {