Added batch insert util to replace bulk insert. Fixed circular dependencies.

This commit is contained in:
DebaucheryLibrarian
2026-02-25 01:09:49 +01:00
parent 9f37f54634
commit e77ced44c7
6 changed files with 260 additions and 87 deletions

88
src/entity-releases.js Normal file
View File

@@ -0,0 +1,88 @@
'use strict';
const knex = require('./knex');
const argv = require('./argv');
async function fetchEntityReleaseIds(networkSlugs = [], channelSlugs = []) {
const entityQuery = knex
.withRecursive('selected_entities', knex.raw(`
SELECT entities.*
FROM entities
WHERE
entities.slug = ANY(:networkSlugs)
AND entities.type = 'network'
OR (entities.slug = ANY(:channelSlugs)
AND entities.type = 'channel')
UNION ALL
SELECT entities.*
FROM entities
INNER JOIN selected_entities ON selected_entities.id = entities.parent_id
`, {
networkSlugs,
channelSlugs,
}));
const sceneIds = await entityQuery
.clone()
.select('releases.id')
.distinct('releases.id')
.from('selected_entities')
.leftJoin('releases', 'releases.entity_id', 'selected_entities.id')
.whereNotNull('releases.id')
.modify((builder) => {
if (argv.flushAfter) {
builder.where('effective_date', '>=', argv.flushAfter);
}
if (argv.flushBefore) {
builder.where('effective_date', '<=', argv.flushBefore);
}
})
.pluck('releases.id');
const movieIds = await entityQuery
.clone()
.select('movies.id')
.distinct('movies.id')
.from('selected_entities')
.leftJoin('movies', 'movies.entity_id', 'selected_entities.id')
.whereNotNull('movies.id')
.modify((builder) => {
if (argv.flushAfter) {
builder.where('effective_date', '>=', argv.flushAfter);
}
if (argv.flushBefore) {
builder.where('effective_date', '<=', argv.flushBefore);
}
})
.pluck('movies.id');
const serieIds = await entityQuery
.clone()
.select('series.id')
.distinct('series.id')
.from('selected_entities')
.leftJoin('series', 'series.entity_id', 'selected_entities.id')
.whereNotNull('series.id')
.modify((builder) => {
if (argv.flushAfter) {
builder.where('date', '>=', argv.flushAfter);
}
if (argv.flushBefore) {
builder.where('date', '<=', argv.flushBefore);
}
})
.pluck('series.id');
return {
sceneIds,
movieIds,
serieIds,
};
}
module.exports = {
fetchEntityReleaseIds,
};