summaryrefslogtreecommitdiff
path: root/src/server/api/endpoints
diff options
context:
space:
mode:
authorsyuilo <syuilotan@yahoo.co.jp>2018-06-15 09:53:30 +0900
committersyuilo <syuilotan@yahoo.co.jp>2018-06-15 09:53:30 +0900
commitbd827f946a94061f9f720cafe26323ccb605ee92 (patch)
tree1ed4dd13bbb7f1343582de48b97570bd5bfc530d /src/server/api/endpoints
parentFix (diff)
downloadsharkey-bd827f946a94061f9f720cafe26323ccb605ee92.tar.gz
sharkey-bd827f946a94061f9f720cafe26323ccb605ee92.tar.bz2
sharkey-bd827f946a94061f9f720cafe26323ccb605ee92.zip
ドライブのファイルの削除を実装
Diffstat (limited to 'src/server/api/endpoints')
-rw-r--r--src/server/api/endpoints/drive/files.ts6
-rw-r--r--src/server/api/endpoints/drive/files/delete.ts32
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;
+};