Added orphaned media flush and batch release flush.

This commit is contained in:
DebaucheryLibrarian
2020-10-25 00:52:40 +02:00
parent ef852f0191
commit 0bd7fca876
9 changed files with 196 additions and 29 deletions

View File

@@ -1,6 +1,10 @@
'use strict';
const inquirer = require('inquirer');
const logger = require('./logger')(__filename);
const knex = require('./knex');
const { flushOrphanedMedia } = require('./media');
function curateRelease(release, withMedia = false) {
if (!release) {
@@ -125,14 +129,52 @@ async function deleteScenes(sceneIds) {
await knex('releases')
.whereIn('id', sceneIds)
.delete();
}
// TODO: wipe media without associations, clean disk
async function deleteMovies(movieIds) {
await knex('movies')
.whereIn('id', movieIds)
.delete();
}
async function flushBatches(batchIds) {
const [sceneIds, movieIds] = await Promise.all([
knex('releases')
.select('releases.id')
.whereIn('created_batch_id', batchIds)
.pluck('releases.id'),
knex('movies').whereIn('created_batch_id', batchIds)
.select('movies.id')
.whereIn('created_batch_id', batchIds)
.pluck('movies.id'),
]);
const confirmed = await inquirer.prompt([{
type: 'confirm',
name: 'flushBatches',
message: `You are about to remove ${sceneIds.length} scenes and ${movieIds.length} movies from batches ${batchIds}. Are you sure?`,
default: false,
}]);
if (!confirmed.flushBatches) {
logger.warn(`Confirmation rejected, not flushing scenes or movies for batches ${batchIds}`);
return;
}
await Promise.all([
deleteScenes(sceneIds),
deleteMovies(movieIds),
]);
await flushOrphanedMedia();
}
module.exports = {
curateRelease,
fetchRelease,
fetchReleases,
flushBatches,
searchReleases,
deleteScenes,
deleteMovies,
};