Added new bulk upsert utility.
This commit is contained in:
@@ -6,6 +6,7 @@ const argv = require('./argv');
|
||||
const logger = require('./logger')(__filename);
|
||||
const knex = require('./knex');
|
||||
const slugify = require('./utils/slugify');
|
||||
const bulkInsert = require('./utils/bulk-insert');
|
||||
const { formatDate } = require('./utils/qu');
|
||||
const { associateActors, scrapeActors } = require('./actors');
|
||||
const { associateReleaseTags } = require('./tags');
|
||||
@@ -125,10 +126,23 @@ function attachReleaseIds(releases, storedReleases) {
|
||||
return acc;
|
||||
}, {});
|
||||
|
||||
const releasesWithId = releases.map(release => ({
|
||||
...release,
|
||||
id: storedReleaseIdsByEntityIdAndEntryId[release.entity.id][release.entryId],
|
||||
}));
|
||||
const releasesWithId = releases.map((release) => {
|
||||
if (!release.entity) {
|
||||
logger.error(`No entitity available for ${release.url}`);
|
||||
return null;
|
||||
}
|
||||
|
||||
const id = storedReleaseIdsByEntityIdAndEntryId[release.entity.id]?.[release.entryId];
|
||||
|
||||
if (id) {
|
||||
return {
|
||||
...release,
|
||||
id,
|
||||
};
|
||||
}
|
||||
|
||||
return null;
|
||||
}).filter(Boolean);
|
||||
|
||||
return releasesWithId;
|
||||
}
|
||||
@@ -283,7 +297,7 @@ async function associateMovieScenes(movies, movieScenes) {
|
||||
});
|
||||
}).flat().filter(Boolean);
|
||||
|
||||
await knex.batchInsert('movies_scenes', associations);
|
||||
await bulkInsert('movies_scenes', associations, ['movie_id', 'scene_id']);
|
||||
}
|
||||
|
||||
async function storeMovies(movies, movieScenes) {
|
||||
@@ -291,8 +305,8 @@ async function storeMovies(movies, movieScenes) {
|
||||
const [batchId] = await knex('batches').insert({ comment: null }).returning('id');
|
||||
|
||||
const curatedMovieEntries = uniqueReleases.map(release => curateReleaseEntry(release, batchId, null, 'movie'));
|
||||
const storedMovies = await knex.batchInsert('movies', curatedMovieEntries).returning('*');
|
||||
|
||||
const storedMovies = await bulkInsert('movies', curatedMovieEntries, ['entity_id', 'entry_id'], true);
|
||||
const moviesWithId = attachReleaseIds(movies, storedMovies);
|
||||
|
||||
await associateMovieScenes(moviesWithId, movieScenes);
|
||||
|
||||
Reference in New Issue
Block a user