From 53415e9ba4bbee35b337afd97940e23eb4523d2c Mon Sep 17 00:00:00 2001 From: syuilo Date: Thu, 12 Apr 2018 04:22:06 +0900 Subject: wip --- src/models/drive-folder.ts | 49 ++++++++++++++++++++++++++++++++++++++++++---- 1 file changed, 45 insertions(+), 4 deletions(-) (limited to 'src/models/drive-folder.ts') diff --git a/src/models/drive-folder.ts b/src/models/drive-folder.ts index 45cc9c9649..e7961936aa 100644 --- a/src/models/drive-folder.ts +++ b/src/models/drive-folder.ts @@ -21,12 +21,53 @@ export function isValidFolderName(name: string): boolean { ); } +/** + * DriveFolderを物理削除します + */ +export async function deleteDriveFolder(driveFolder: string | mongo.ObjectID | IDriveFolder) { + let d: IDriveFolder; + + // Populate + if (mongo.ObjectID.prototype.isPrototypeOf(driveFolder)) { + d = await DriveFolder.findOne({ + _id: driveFolder + }); + } else if (typeof driveFolder === 'string') { + d = await DriveFolder.findOne({ + _id: new mongo.ObjectID(driveFolder) + }); + } else { + d = driveFolder as IDriveFolder; + } + + if (d == null) return; + + // このDriveFolderに格納されているDriveFileがあればすべてルートに移動 + await DriveFile.update({ + 'metadata.folderId': d._id + }, { + $set: { + 'metadata.folderId': null + } + }); + + // このDriveFolderに格納されているDriveFolderがあればすべてルートに移動 + await DriveFolder.update({ + parentId: d._id + }, { + $set: { + parentId: null + } + }); + + // このDriveFolderを削除 + await DriveFolder.remove({ + _id: d._id + }); +} + /** * Pack a drive folder for API response - * - * @param {any} folder - * @param {any} options? - * @return {Promise} */ export const pack = ( folder: any, -- cgit v1.2.3-freya