diff options
| author | syuilo <syuilotan@yahoo.co.jp> | 2018-06-15 09:53:30 +0900 |
|---|---|---|
| committer | syuilo <syuilotan@yahoo.co.jp> | 2018-06-15 09:53:30 +0900 |
| commit | bd827f946a94061f9f720cafe26323ccb605ee92 (patch) | |
| tree | 1ed4dd13bbb7f1343582de48b97570bd5bfc530d /src/server/api | |
| parent | Fix (diff) | |
| download | sharkey-bd827f946a94061f9f720cafe26323ccb605ee92.tar.gz sharkey-bd827f946a94061f9f720cafe26323ccb605ee92.tar.bz2 sharkey-bd827f946a94061f9f720cafe26323ccb605ee92.zip | |
ドライブのファイルの削除を実装
Diffstat (limited to 'src/server/api')
| -rw-r--r-- | src/server/api/endpoints/drive/files.ts | 6 | ||||
| -rw-r--r-- | src/server/api/endpoints/drive/files/delete.ts | 32 |
2 files changed, 37 insertions, 1 deletions
diff --git a/src/server/api/endpoints/drive/files.ts b/src/server/api/endpoints/drive/files.ts index ab4b18cef4..0f0e3d65a8 100644 --- a/src/server/api/endpoints/drive/files.ts +++ b/src/server/api/endpoints/drive/files.ts @@ -37,10 +37,13 @@ module.exports = async (params, user, app) => { const sort = { _id: -1 }; + const query = { 'metadata.userId': user._id, - 'metadata.folderId': folderId + 'metadata.folderId': folderId, + 'metadata.deletedAt': { $exists: false } } as any; + if (sinceId) { sort._id = 1; query._id = { @@ -51,6 +54,7 @@ module.exports = async (params, user, app) => { $lt: untilId }; } + if (type) { query.contentType = new RegExp(`^${type.replace(/\*/g, '.+?')}$`); } diff --git a/src/server/api/endpoints/drive/files/delete.ts b/src/server/api/endpoints/drive/files/delete.ts new file mode 100644 index 0000000000..a722b4e825 --- /dev/null +++ b/src/server/api/endpoints/drive/files/delete.ts @@ -0,0 +1,32 @@ +import $ from 'cafy'; import ID from '../../../../../cafy-id'; +import DriveFile from '../../../../../models/drive-file'; +import del from '../../../../../services/drive/delete-file'; +import { publishDriveStream } from '../../../../../publishers/stream'; + +/** + * Delete a file + */ +module.exports = async (params, user) => { + // Get 'fileId' parameter + const [fileId, fileIdErr] = $.type(ID).get(params.fileId); + if (fileIdErr) throw 'invalid fileId param'; + + // Fetch file + const file = await DriveFile + .findOne({ + _id: fileId, + 'metadata.userId': user._id + }); + + if (file === null) { + throw 'file-not-found'; + } + + // Delete + await del(file); + + // Publish file_deleted event + publishDriveStream(user._id, 'file_deleted', file._id); + + return; +}; |