summaryrefslogtreecommitdiff
path: root/src/models/drive-folder.ts
diff options
context:
space:
mode:
authorsyuilo <syuilotan@yahoo.co.jp>2018-04-12 04:22:06 +0900
committersyuilo <syuilotan@yahoo.co.jp>2018-04-12 04:22:06 +0900
commit53415e9ba4bbee35b337afd97940e23eb4523d2c (patch)
tree0681daac74dd3637b01e10a7e6916161f4568dfd /src/models/drive-folder.ts
parentwip (diff)
downloadmisskey-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.ts49
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,