diff --git a/src/models/sw-subscription.ts b/src/models/sw-subscription.ts index 743d0d2dd..621ac8a9b 100644 --- a/src/models/sw-subscription.ts +++ b/src/models/sw-subscription.ts @@ -11,3 +11,31 @@ export interface ISwSubscription { auth: string; publickey: string; } + +/** + * SwSubscriptionを物理削除します + */ +export async function deleteSwSubscription(swSubscription: string | mongo.ObjectID | ISwSubscription) { + let s: ISwSubscription; + + // Populate + if (mongo.ObjectID.prototype.isPrototypeOf(swSubscription)) { + s = await SwSubscription.findOne({ + _id: swSubscription + }); + } else if (typeof swSubscription === 'string') { + s = await SwSubscription.findOne({ + _id: new mongo.ObjectID(swSubscription) + }); + } else { + s = swSubscription as ISwSubscription; + } + + if (s == null) return; + + // このSwSubscriptionを削除 + await SwSubscription.remove({ + _id: s._id + }); +} + diff --git a/src/models/user.ts b/src/models/user.ts index a4b7becbd..c121790c3 100644 --- a/src/models/user.ts +++ b/src/models/user.ts @@ -18,6 +18,7 @@ import DriveFolder, { deleteDriveFolder } from './drive-folder'; import PollVote, { deletePollVote } from './poll-vote'; import FollowingLog, { deleteFollowingLog } from './following-log'; import FollowedLog, { deleteFollowedLog } from './followed-log'; +import SwSubscription, { deleteSwSubscription } from './sw-subscription'; const User = db.get('users'); @@ -239,6 +240,11 @@ export async function deleteUser(user: string | mongo.ObjectID | IUser) { await FollowedLog.find({ userId: u._id }) ).map(x => deleteFollowedLog(x))); + // このユーザーのSwSubscriptionをすべて削除 + await Promise.all(( + await SwSubscription.find({ userId: u._id }) + ).map(x => deleteSwSubscription(x))); + // このユーザーを削除 }