Added series removal utils.
This commit is contained in:
parent
ae9b793318
commit
0dad5b0d68
|
@ -6,7 +6,7 @@ const inquirer = require('inquirer');
|
||||||
const logger = require('./logger')(__filename);
|
const logger = require('./logger')(__filename);
|
||||||
const argv = require('./argv');
|
const argv = require('./argv');
|
||||||
const knex = require('./knex');
|
const knex = require('./knex');
|
||||||
const { deleteScenes, deleteMovies } = require('./releases');
|
const { deleteScenes, deleteMovies, deleteSeries } = require('./releases');
|
||||||
const { flushOrphanedMedia } = require('./media');
|
const { flushOrphanedMedia } = require('./media');
|
||||||
const { resolveScraper, resolveLayoutScraper } = require('./scrapers/resolve');
|
const { resolveScraper, resolveLayoutScraper } = require('./scrapers/resolve');
|
||||||
|
|
||||||
|
@ -359,29 +359,39 @@ async function flushEntities(networkSlugs = [], channelSlugs = []) {
|
||||||
.leftJoin('movies', 'movies.entity_id', 'selected_entities.id')
|
.leftJoin('movies', 'movies.entity_id', 'selected_entities.id')
|
||||||
.pluck('movies.id');
|
.pluck('movies.id');
|
||||||
|
|
||||||
if (sceneIds.length === 0 && movieIds.length === 0) {
|
const serieIds = await entityQuery
|
||||||
logger.info(`No scenes or movies found to remove for ${entitySlugs}`);
|
.clone()
|
||||||
|
.select('series.id')
|
||||||
|
.distinct('series.id')
|
||||||
|
.whereNotNull('series.id')
|
||||||
|
.from('selected_entities')
|
||||||
|
.leftJoin('series', 'series.entity_id', 'selected_entities.id')
|
||||||
|
.pluck('series.id');
|
||||||
|
|
||||||
|
if (sceneIds.length === 0 && movieIds.length === 0 && serieIds.length === 0) {
|
||||||
|
logger.info(`No scenes, movies or series found to remove for ${entitySlugs}`);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
const confirmed = await inquirer.prompt([{
|
const confirmed = await inquirer.prompt([{
|
||||||
type: 'confirm',
|
type: 'confirm',
|
||||||
name: 'flushEntities',
|
name: 'flushEntities',
|
||||||
message: `You are about to remove ${sceneIds.length} scenes and ${movieIds.length} movies for ${entitySlugs}. Are you sure?`,
|
message: `You are about to remove ${sceneIds.length} scenes, ${movieIds.length} movies and ${serieIds.length} series for ${entitySlugs}. Are you sure?`,
|
||||||
default: false,
|
default: false,
|
||||||
}]);
|
}]);
|
||||||
|
|
||||||
if (!confirmed.flushEntities) {
|
if (!confirmed.flushEntities) {
|
||||||
logger.warn(`Confirmation rejected, not flushing scenes or movies for: ${entitySlugs}`);
|
logger.warn(`Confirmation rejected, not flushing scenes, movies or series for: ${entitySlugs}`);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
const [deletedScenesCount, deletedMoviesCount] = await Promise.all([
|
const [deletedScenesCount, deletedMoviesCount, deletedSeriesCount] = await Promise.all([
|
||||||
deleteScenes(sceneIds),
|
deleteScenes(sceneIds),
|
||||||
deleteMovies(movieIds),
|
deleteMovies(movieIds),
|
||||||
|
deleteSeries(serieIds),
|
||||||
]);
|
]);
|
||||||
|
|
||||||
logger.info(`Removed ${deletedScenesCount} scenes and ${deletedMoviesCount} movies for ${entitySlugs}`);
|
logger.info(`Removed ${deletedScenesCount} scenes, ${deletedMoviesCount} movies and ${deletedSeriesCount} series for ${entitySlugs}`);
|
||||||
|
|
||||||
await flushOrphanedMedia();
|
await flushOrphanedMedia();
|
||||||
}
|
}
|
||||||
|
|
|
@ -325,6 +325,24 @@ async function deleteMovies(movieIds) {
|
||||||
return deleteCount;
|
return deleteCount;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
async function deleteSeries(serieIds) {
|
||||||
|
if (serieIds.length === 0) {
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
await knex('series_scenes')
|
||||||
|
.whereIn('serie_id', serieIds)
|
||||||
|
.delete();
|
||||||
|
|
||||||
|
const deleteCount = await knex('series')
|
||||||
|
.whereIn('id', serieIds)
|
||||||
|
.delete();
|
||||||
|
|
||||||
|
logger.info(`Removed ${deleteCount}/${serieIds.length} series`);
|
||||||
|
|
||||||
|
return deleteCount;
|
||||||
|
}
|
||||||
|
|
||||||
async function flushScenes() {
|
async function flushScenes() {
|
||||||
const sceneIds = await knex('releases').select('id').pluck('id');
|
const sceneIds = await knex('releases').select('id').pluck('id');
|
||||||
|
|
||||||
|
@ -367,6 +385,27 @@ async function flushMovies() {
|
||||||
logger.info(`Removed ${deleteCount}/${movieIds.length} movies`);
|
logger.info(`Removed ${deleteCount}/${movieIds.length} movies`);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
async function flushSeries() {
|
||||||
|
const serieIds = await knex('series').select('id').pluck('id');
|
||||||
|
|
||||||
|
const confirmed = await inquirer.prompt([{
|
||||||
|
type: 'confirm',
|
||||||
|
name: 'flushSeries',
|
||||||
|
message: `You are about to remove ${serieIds.length} series. Are you sure?`,
|
||||||
|
default: false,
|
||||||
|
}]);
|
||||||
|
|
||||||
|
if (!confirmed.flushSeries) {
|
||||||
|
logger.warn('Confirmation rejected, not flushing series');
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
const deleteCount = await deleteSeries(serieIds);
|
||||||
|
|
||||||
|
await flushOrphanedMedia();
|
||||||
|
|
||||||
|
logger.info(`Removed ${deleteCount}/${serieIds.length} series`);
|
||||||
|
}
|
||||||
|
|
||||||
async function flushBatches(batchIds) {
|
async function flushBatches(batchIds) {
|
||||||
const [sceneIds, movieIds] = await Promise.all([
|
const [sceneIds, movieIds] = await Promise.all([
|
||||||
knex('releases')
|
knex('releases')
|
||||||
|
@ -407,8 +446,10 @@ module.exports = {
|
||||||
fetchScenes,
|
fetchScenes,
|
||||||
flushBatches,
|
flushBatches,
|
||||||
flushMovies,
|
flushMovies,
|
||||||
|
flushSeries,
|
||||||
flushScenes,
|
flushScenes,
|
||||||
searchScenes,
|
searchScenes,
|
||||||
deleteScenes,
|
deleteScenes,
|
||||||
deleteMovies,
|
deleteMovies,
|
||||||
|
deleteSeries,
|
||||||
};
|
};
|
||||||
|
|
Loading…
Reference in New Issue