diff options
| author | syuilo <syuilotan@yahoo.co.jp> | 2018-04-12 04:22:06 +0900 |
|---|---|---|
| committer | syuilo <syuilotan@yahoo.co.jp> | 2018-04-12 04:22:06 +0900 |
| commit | 53415e9ba4bbee35b337afd97940e23eb4523d2c (patch) | |
| tree | 0681daac74dd3637b01e10a7e6916161f4568dfd /src/models/drive-folder.ts | |
| parent | wip (diff) | |
| download | misskey-53415e9ba4bbee35b337afd97940e23eb4523d2c.tar.gz misskey-53415e9ba4bbee35b337afd97940e23eb4523d2c.tar.bz2 misskey-53415e9ba4bbee35b337afd97940e23eb4523d2c.zip | |
wip
Diffstat (limited to 'src/models/drive-folder.ts')
| -rw-r--r-- | src/models/drive-folder.ts | 49 |
1 files changed, 45 insertions, 4 deletions
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 @@ -22,11 +22,52 @@ 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<any>} */ export const pack = ( folder: any, |