diff --git a/scripts/commands/cleanup-database.js b/scripts/commands/cleanup-database.js index 11f9e9e6b..d005c4807 100644 --- a/scripts/commands/cleanup-database.js +++ b/scripts/commands/cleanup-database.js @@ -1,11 +1,21 @@ const { db, logger } = require('../core') async function main() { - const removed = await db.remove( - { 'status.code': { $in: ['timeout', 'offline'] } }, - { multi: true } - ) + logger.info(`Loading database...`) + let streams = await db.find({}) + logger.info(`Removing broken links...`) + let removed = 0 + const buffer = [] + for (const stream of streams) { + const duplicate = buffer.find(i => i.id === stream.id) + if (duplicate && ['offline', 'timeout'].includes(stream.status.code)) { + await db.remove({ _id: stream._id }) + removed++ + } else { + buffer.push(stream) + } + } db.compact() logger.info(`Removed ${removed} links`)