1
0
mirror of https://gitlab.com/comunic/comunicapiv2 synced 2024-11-22 05:19:22 +00:00

Can delete information associated to a post

This commit is contained in:
Pierre HUBERT 2020-03-21 08:57:51 +01:00
parent db9be6bb31
commit a1613758e4
3 changed files with 73 additions and 1 deletions

View File

@ -73,6 +73,10 @@ export class PostFile implements PostFileBuilder {
get url() : string {
return pathUserData(this.path)
}
get sysPath() : string {
return pathUserData(this.path, true);
}
}
export interface PostLinkBuilder {

View File

@ -7,6 +7,8 @@ import { GroupMembershipLevels } from "../entities/GroupMember";
import { mysql_date } from "../utils/DateUtils";
import { LikesHelper, LikesType } from "./LikesHelper";
import { CommentsHelper } from "./CommentsHelper";
import { existsSync, unlinkSync } from "fs";
import { SurveyHelper } from "./SurveyHelper";
/**
* Posts helper
@ -493,7 +495,18 @@ export class PostsHelper {
// Delete all the comments associated to the post
await CommentsHelper.DeleteAll(postID);
// TODO : continue deletion
// Delete associated file (if any)
if(post.kind == PostKind.POST_KIND_IMAGE
|| post.kind == PostKind.POST_KIND_PDF) {
if(existsSync(post.file.sysPath))
unlinkSync(post.file.sysPath);
}
// Delete associated survey (if any)
if(post.kind == PostKind.POST_KIND_SURVEY) {
if(await SurveyHelper.Exists(postID))
await SurveyHelper.Delete(postID);
}
}
/**

View File

@ -54,6 +54,61 @@ export class SurveyHelper {
}
}
/**
* Check out whether a survey is associated to a post or not
*
* @param postID Target post ID
*/
public static async Exists(postID: number) : Promise<boolean> {
return await DatabaseHelper.Count({
table: SURVEY_INFO_TABLE,
where: {
ID_texte: postID
}
}) > 0
}
/**
* Get the ID of the survey associated with a post
*
* @param postID Target post ID
*/
private static async GetID(postID: number) : Promise<number> {
const info = await DatabaseHelper.QueryRow({
table: SURVEY_INFO_TABLE,
where: {
ID_texte: postID
},
fields: ["ID"]
});
if(info == null)
throw new Error("Survey for post " + postID + " not found!");
return info.ID;
}
/**
* Delete the survey associated to a post
*
* @param postID Target post ID
*/
public static async Delete(postID: number) {
const surveyID = await this.GetID(postID);
DatabaseHelper.DeleteRows(SURVEY_RESPONSE_TABLE, {
ID_sondage: surveyID
});
DatabaseHelper.DeleteRows(SURVEY_CHOICES_TABLE, {
ID_sondage: surveyID
});
DatabaseHelper.DeleteRows(SURVEY_INFO_TABLE, {
ID: surveyID
});
}
/**
* Get information about the survey of a post
*