From 0f13ae3c87a121aacfe677af8e08139d59f77632 Mon Sep 17 00:00:00 2001 From: Julian Lam Date: Mon, 16 Apr 2018 16:44:17 -0400 Subject: [PATCH] added isOrphan method, #6455 --- src/posts/uploads.js | 7 +++++++ test/posts.js | 18 ++++++++++++++++++ 2 files changed, 25 insertions(+) diff --git a/src/posts/uploads.js b/src/posts/uploads.js index ccfccb96a4..cd2520ea3d 100644 --- a/src/posts/uploads.js +++ b/src/posts/uploads.js @@ -49,6 +49,13 @@ module.exports = function (Posts) { db.getSortedSetRange('post:' + pid + ':uploads', 0, -1, callback); }; + Posts.uploads.isOrphan = function (filePath, callback) { + // Returns bool indicating whether a file is still CURRENTLY included in any posts + db.sortedSetCard('upload:' + md5(filePath) + ':pids', function (err, length) { + callback(err, length === 0); + }); + }; + Posts.uploads.associate = function (pid, filePaths, callback) { // Adds an upload to a post's sorted set of uploads const now = Date.now(); diff --git a/test/posts.js b/test/posts.js index 1b2702fafa..80d3f9614a 100644 --- a/test/posts.js +++ b/test/posts.js @@ -941,6 +941,24 @@ describe('Post\'s', function () { }); }); + describe('.isOrphan()', function () { + it('should return false if upload is not an orphan', function (done) { + posts.uploads.isOrphan('abracadabra.png', function (err, isOrphan) { + assert.ifError(err); + assert.equal(false, isOrphan); + done(); + }); + }); + + it('should return true if upload is an orphan', function (done) { + posts.uploads.isOrphan('shazam.jpg', function (err, isOrphan) { + assert.ifError(err); + assert.equal(true, isOrphan); + done(); + }); + }); + }); + describe('.associate()', function () { it('should add an image to the post\'s maintained list of uploads', function (done) { async.waterfall([