Added scene media detach.

This commit is contained in:
DebaucheryLibrarian
2026-02-24 06:17:38 +01:00
parent 35c941488e
commit dc7f325d13
4 changed files with 67 additions and 5 deletions

View File

@@ -26,6 +26,7 @@ const http = require('./utils/http');
const bulkInsert = require('./utils/bulk-insert');
const chunk = require('./utils/chunk');
const { get } = require('./utils/qu');
const { fetchEntityReleaseIds } = require('./entities');
// const pipeline = util.promisify(stream.pipeline);
const streamQueue = taskQueue();
@@ -1159,8 +1160,36 @@ async function flushOrphanedMedia(stage = 1) {
}
}
async function detachReleaseMedia(rawSceneIds) {
const sceneIds = rawSceneIds.map((sceneId) => Number(sceneId)).filter(Boolean);
await argv.detachMediaDomains.reduce(async (chain, domain) => {
await chain;
const mediaEntries = await knex(`releases_${domain}`).whereIn('release_id', sceneIds);
await knex(`releases_${domain}`)
.whereIn('release_id', sceneIds)
.delete();
logger.info(`Removed ${mediaEntries.length} ${domain} from ${new Set(mediaEntries.map((mediaEntry) => mediaEntry.release_id)).size} scenes`);
}, Promise.resolve());
if (argv.flushOrphanedMedia !== false) {
await flushOrphanedMedia();
}
}
async function detachEntityReleaseMedia(networkSlugs = [], channelSlugs = []) {
const { sceneIds } = await fetchEntityReleaseIds(networkSlugs, channelSlugs);
await detachReleaseMedia(sceneIds);
}
module.exports = {
associateAvatars,
associateReleaseMedia,
flushOrphanedMedia,
detachReleaseMedia,
detachEntityReleaseMedia,
};