From 92dd4b3e5a701823ebb5a453aa42202da8a326ea Mon Sep 17 00:00:00 2001 From: syuilo Date: Thu, 12 Apr 2018 04:05:03 +0900 Subject: wip --- src/models/messaging-message.ts | 38 +++++++++++++++++++++++++++++++++----- 1 file changed, 33 insertions(+), 5 deletions(-) (limited to 'src/models/messaging-message.ts') diff --git a/src/models/messaging-message.ts b/src/models/messaging-message.ts index 974ee54ab8..9d62fab4fa 100644 --- a/src/models/messaging-message.ts +++ b/src/models/messaging-message.ts @@ -3,6 +3,7 @@ import deepcopy = require('deepcopy'); import { pack as packUser } from './user'; import { pack as packFile } from './drive-file'; import db from '../db/mongodb'; +import MessagingHistory, { deleteMessagingHistory } from './messaging-history'; const MessagingMessage = db.get('messagingMessages'); export default MessagingMessage; @@ -22,13 +23,40 @@ export function isValidText(text: string): boolean { return text.length <= 1000 && text.trim() != ''; } +/** + * MessagingMessageを物理削除します + */ +export async function deleteMessagingMessage(messagingMessage: string | mongo.ObjectID | IMessagingMessage) { + let m: IMessagingMessage; + + // Populate + if (mongo.ObjectID.prototype.isPrototypeOf(messagingMessage)) { + m = await MessagingMessage.findOne({ + _id: messagingMessage + }); + } else if (typeof messagingMessage === 'string') { + m = await MessagingMessage.findOne({ + _id: new mongo.ObjectID(messagingMessage) + }); + } else { + m = messagingMessage as IMessagingMessage; + } + + if (m == null) return; + + // このMessagingMessageを指すMessagingHistoryをすべて削除 + await Promise.all(( + await MessagingHistory.find({ messageId: m._id }) + ).map(x => deleteMessagingHistory(x))); + + // このMessagingMessageを削除 + await MessagingMessage.remove({ + _id: m._id + }); +} + /** * Pack a messaging message for API response - * - * @param {any} message - * @param {any} me? - * @param {any} options? - * @return {Promise} */ export const pack = ( message: any, -- cgit v1.2.3-freya