[MM-56073] MMCTL delete post command (#27539)
Co-authored-by: Ben Schumacher <ben.schumacher@mattermost.com>
Этот коммит содержится в:
@@ -1594,3 +1594,65 @@ func getFileExtFromMimeType(mimeType string) string {
|
||||
}
|
||||
return "jpg"
|
||||
}
|
||||
|
||||
func (a *App) PermanentDeleteFilesByPost(rctx request.CTX, postID string) *model.AppError {
|
||||
fileInfos, err := a.Srv().Store().FileInfo().GetForPost(postID, false, true, true)
|
||||
if err != nil {
|
||||
return model.NewAppError("PermanentDeleteFilesByPost", "app.file_info.get_by_post_id.app_error", nil, "", http.StatusInternalServerError).Wrap(err)
|
||||
}
|
||||
if len(fileInfos) == 0 {
|
||||
rctx.Logger().Debug("No files found for post", mlog.String("post_id", postID))
|
||||
return nil
|
||||
}
|
||||
|
||||
a.RemoveFilesFromFileStore(rctx, fileInfos)
|
||||
|
||||
err = a.Srv().Store().FileInfo().PermanentDeleteForPost(rctx, postID)
|
||||
if err != nil {
|
||||
return model.NewAppError("PermanentDeleteFilesByPost", "app.file_info.permanent_delete_for_post.app_error", nil, "", http.StatusInternalServerError).Wrap(err)
|
||||
}
|
||||
|
||||
a.Srv().Store().FileInfo().InvalidateFileInfosForPostCache(postID, true)
|
||||
a.Srv().Store().FileInfo().InvalidateFileInfosForPostCache(postID, false)
|
||||
|
||||
return nil
|
||||
}
|
||||
|
||||
func (a *App) RemoveFilesFromFileStore(rctx request.CTX, fileInfos []*model.FileInfo) {
|
||||
for _, info := range fileInfos {
|
||||
a.RemoveFileFromFileStore(rctx, info.Path)
|
||||
if info.PreviewPath != "" {
|
||||
a.RemoveFileFromFileStore(rctx, info.PreviewPath)
|
||||
}
|
||||
if info.ThumbnailPath != "" {
|
||||
a.RemoveFileFromFileStore(rctx, info.ThumbnailPath)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
func (a *App) RemoveFileFromFileStore(rctx request.CTX, path string) {
|
||||
res, appErr := a.FileExists(path)
|
||||
if appErr != nil {
|
||||
rctx.Logger().Warn(
|
||||
"Error checking existence of file",
|
||||
mlog.String("path", path),
|
||||
mlog.Err(appErr),
|
||||
)
|
||||
return
|
||||
}
|
||||
|
||||
if !res {
|
||||
rctx.Logger().Warn("File not found", mlog.String("path", path))
|
||||
return
|
||||
}
|
||||
|
||||
appErr = a.RemoveFile(path)
|
||||
if appErr != nil {
|
||||
rctx.Logger().Warn(
|
||||
"Unable to remove file",
|
||||
mlog.String("path", path),
|
||||
mlog.Err(appErr),
|
||||
)
|
||||
return
|
||||
}
|
||||
}
|
||||
|
||||
Ссылка в новой задаче
Block a user