summary refs log tree commit diff
path: root/api/src/util/Attachments.ts
diff options
context:
space:
mode:
authorFlam3rboy <34555296+Flam3rboy@users.noreply.github.com>2021-09-13 17:59:21 +0200
committerGitHub <noreply@github.com>2021-09-13 17:59:21 +0200
commita00c87d8ba2e8e3dd6f1cd7ed9ee5ed6259c7f19 (patch)
treef11c5005d4870739ec3be422a84f2aba532af4fd /api/src/util/Attachments.ts
parent:bug: fix In() query (diff)
parentDelete attachments of deleted messages, fix #273 (diff)
downloadserver-a00c87d8ba2e8e3dd6f1cd7ed9ee5ed6259c7f19.tar.xz
Merge pull request #355 from AlTech98/attachments
Attachments fixes
Diffstat (limited to 'api/src/util/Attachments.ts')
-rw-r--r--api/src/util/Attachments.ts12
1 files changed, 12 insertions, 0 deletions
diff --git a/api/src/util/Attachments.ts b/api/src/util/Attachments.ts
new file mode 100644

index 00000000..addda97f --- /dev/null +++ b/api/src/util/Attachments.ts
@@ -0,0 +1,12 @@ +import { Attachment } from "@fosscord/util"; +import { deleteFile } from "@fosscord/api"; +import { URL } from "url"; + +export async function deleteMessageAttachments(messageId: string, keep?: Attachment[]) { + let attachments = await Attachment.find({ message_id: messageId }); + if (keep) + attachments = attachments.filter(x => !keep.map(k => k.id).includes(x.id)); + await Promise.all(attachments.map(a => a.remove())); + + attachments.forEach(a => deleteFile((new URL(a.url)).pathname)); //We don't need to await since this is done on the cdn +}