Added batch insert util to replace bulk insert. Fixed circular dependencies.
This commit is contained in:
88
src/entity-releases.js
Normal file
88
src/entity-releases.js
Normal 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,
|
||||
};
|
||||
Reference in New Issue
Block a user