From b46b9ea386e0b6aa83f5a6d805e55cdb7476a871 Mon Sep 17 00:00:00 2001 From: Joeri Colman Date: Tue, 8 Feb 2022 10:07:37 +0100 Subject: [PATCH 1/3] Added deleteAllFiles api endpoint --- Public API v1.yaml | 29 +++++++++++++++++++++++++++++ backend/app.js | 40 ++++++++++++++++++++++++++++++++++++++++ 2 files changed, 69 insertions(+) diff --git a/Public API v1.yaml b/Public API v1.yaml index ad43d48..5768979 100644 --- a/Public API v1.yaml +++ b/Public API v1.yaml @@ -482,6 +482,26 @@ paths: description: OK security: - Auth query parameter: [] + /api/deleteAllFiles: + post: + tags: + - files + summary: Delete all downloaded files + operationId: post-api-deleteAllFiles + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/DeleteMp3Mp4Request' + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/DeleteAllFilesResponse' + security: + - Auth query parameter: [] /api/downloadArchive: post: tags: @@ -1356,6 +1376,15 @@ components: type: boolean error: type: string + DeleteAllFilesResponse: + type: object + properties: + file_count: + type: number + description: Number of files found matching search parameters + delete_count: + type: number + description: Number of files removed DeleteSubscriptionFileRequest: required: - file diff --git a/backend/app.js b/backend/app.js index b12d502..7d46f16 100644 --- a/backend/app.js +++ b/backend/app.js @@ -1616,6 +1616,46 @@ app.post('/api/deleteFile', optionalJwt, async (req, res) => { res.send(wasDeleted); }); +app.post('/api/deleteAllFiles', optionalJwt, async (req, res) => { + const blacklistMode = false; + const uuid = req.isAuthenticated() ? req.user.uid : null; + + let files = null; + let text_search = req.body.text_search; + let file_type_filter = req.body.file_type_filter; + + const filter_obj = {user_uid: uuid}; + const regex = true; + if (text_search) { + if (regex) { + filter_obj['title'] = {$regex: `.*${text_search}.*`, $options: 'i'}; + } else { + filter_obj['$text'] = { $search: utils.createEdgeNGrams(text_search) }; + } + } + + if (file_type_filter === 'audio_only') filter_obj['isAudio'] = true; + else if (file_type_filter === 'video_only') filter_obj['isAudio'] = false; + + files = await db_api.getRecords('files', filter_obj); + + let file_count = await db_api.getRecords('files', filter_obj, true); + let delete_count = 0; + + for (let i = 0; i < files.length; i++) { + let wasDeleted = false; + wasDeleted = await db_api.deleteFile(files[i].uid, uuid, blacklistMode); + if (wasDeleted) { + delete_count++; + } + } + + res.send({ + file_count: file_count, + delete_count: delete_count + }); +}); + app.post('/api/downloadFileFromServer', optionalJwt, async (req, res) => { let uid = req.body.uid; let uuid = req.body.uuid; From 3df377a26063e343bc7de2ded317b7a8f03db71a Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Fri, 22 Apr 2022 19:47:28 +0000 Subject: [PATCH 2/3] Bump async from 3.2.0 to 3.2.2 in /backend Bumps [async](https://github.com/caolan/async) from 3.2.0 to 3.2.2. - [Release notes](https://github.com/caolan/async/releases) - [Changelog](https://github.com/caolan/async/blob/master/CHANGELOG.md) - [Commits](https://github.com/caolan/async/compare/v3.2.0...v3.2.2) --- updated-dependencies: - dependency-name: async dependency-type: direct:production ... Signed-off-by: dependabot[bot] --- backend/package-lock.json | 6 +++--- backend/package.json | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/backend/package-lock.json b/backend/package-lock.json index 76daecd..fcb40d6 100644 --- a/backend/package-lock.json +++ b/backend/package-lock.json @@ -325,9 +325,9 @@ "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=" }, "async": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/async/-/async-3.2.0.tgz", - "integrity": "sha512-TR2mEZFVOj2pLStYxLht7TyfuRzaydfpxr3k9RpHIzMgw7A64dzsdqCxH1WJyQdoe8T10nDXd9wnEigmiuHIZw==" + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/async/-/async-3.2.2.tgz", + "integrity": "sha512-H0E+qZaDEfx/FY4t7iLRv1W2fFI6+pyCeTw1uN20AQPiwqwM6ojPxHxdLv4z8hi2DtnW9BOckSspLucW7pIE5g==" }, "async-mutex": { "version": "0.3.1", diff --git a/backend/package.json b/backend/package.json index 76db3a5..183ad4b 100644 --- a/backend/package.json +++ b/backend/package.json @@ -31,7 +31,7 @@ "homepage": "", "dependencies": { "archiver": "^3.1.1", - "async": "^3.1.0", + "async": "^3.2.2", "async-mutex": "^0.3.1", "axios": "^0.21.2", "bcryptjs": "^2.4.0", From 1bd713fe176855dc98d22120c8ce22770c970a20 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Fri, 22 Apr 2022 19:47:54 +0000 Subject: [PATCH 3/3] Bump async from 2.6.3 to 2.6.4 Bumps [async](https://github.com/caolan/async) from 2.6.3 to 2.6.4. - [Release notes](https://github.com/caolan/async/releases) - [Changelog](https://github.com/caolan/async/blob/v2.6.4/CHANGELOG.md) - [Commits](https://github.com/caolan/async/compare/v2.6.3...v2.6.4) --- updated-dependencies: - dependency-name: async dependency-type: indirect ... Signed-off-by: dependabot[bot] --- package-lock.json | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/package-lock.json b/package-lock.json index bd536f2..f14b7b0 100644 --- a/package-lock.json +++ b/package-lock.json @@ -2721,9 +2721,9 @@ "dev": true }, "async": { - "version": "2.6.3", - "resolved": "https://registry.npmjs.org/async/-/async-2.6.3.tgz", - "integrity": "sha512-zflvls11DCy+dQWzTW2dzuilv8Z5X/pjfmZOWba6TNIVDm+2UDaJmXSOXlasHKfNBs8oo3M0aT50fDEWfKZjXg==", + "version": "2.6.4", + "resolved": "https://registry.npmjs.org/async/-/async-2.6.4.tgz", + "integrity": "sha512-mzo5dfJYwAn29PeiJ0zvwTo04zj8HDJj0Mn8TD7sno7q12prdbnasKJHhkm2c1LgrhlJ0teaea8860oxi51mGA==", "dev": true, "requires": { "lodash": "^4.17.14"