Centralized search update to minimize duplicate sync calls.

This commit is contained in:
DebaucheryLibrarian
2026-07-16 02:18:12 +02:00
parent dac74e5a28
commit be31679886
3 changed files with 13 additions and 9 deletions

View File

@@ -252,7 +252,12 @@ async function init() {
const storedMovies = await storeMovies(deepMovies, storedScenes[0]?.batchId);
const storedMovieScenes = await storeScenes(deepMovieScenes, storedScenes[0]?.batchId);
await associateMovieScenes(storedMovies, [...storedScenes, ...storedMovieScenes]);
const allScenes = [...storedScenes, ...storedMovieScenes];
await associateMovieScenes(storedMovies, allScenes);
await updateSceneSearch(allScenes.map((scene) => scene.id));
await updateMovieSearch(storedMovies.map((movie) => movie.id));
}
logger.info(`Completed in ${Object.entries(intervalToDuration({ start: startTime, end: Date.now() }))

View File

@@ -17,7 +17,6 @@ const { associateActors, associateDirectors, scrapeActors, toBaseActors } = requ
const { associateReleaseTags } = require('./tags');
const { curateEntity } = require('./entities');
const { associateReleaseMedia } = require('./media');
const { updateSceneSearch, updateMovieSearch } = require('./update-search');
const geoCommon = import('../common/geo.mjs'); // eslint-disable-line import/extensions, import/no-relative-packages
@@ -344,7 +343,8 @@ async function associateMovieScenes(movies, movieScenes) {
await bulkInsert('movies_scenes', associations, false);
await updateSceneSearch(movieScenes.map((scene) => scene.id));
// movieScenes includes scenes that are not associated to any movies, don't update those (again)
// await updateSceneSearch(associations.map((association) => association.scene_id));
}
async function associateSerieScenes(series, serieScenes) {
@@ -391,7 +391,7 @@ async function storeMovies(movies, useBatchId) {
const moviesWithId = attachReleaseIds(movies, storedMovies);
await associateReleaseTags(moviesWithId, 'movie');
await updateMovieSearch(moviesWithId.map((movie) => movie.id));
// await updateMovieSearch(moviesWithId.map((movie) => movie.id));
await associateReleaseMedia(moviesWithId, 'movie');
@@ -419,7 +419,8 @@ async function storeSeries(series, useBatchId) {
const storedSeries = await bulkInsert('series', curatedSerieEntries, ['entity_id', 'entry_id'], true);
const seriesWithId = attachReleaseIds(series, storedSeries);
await updateMovieSearch(seriesWithId.map((serie) => serie.id), 'serie');
// TODO: the movie search function doesn't accept a second parameter, and we don't currently have a series search index at all; re-evaluate what actually needs to happen here
// await updateMovieSearch(seriesWithId.map((serie) => serie.id), 'serie');
await associateReleaseMedia(seriesWithId, 'serie');
return seriesWithId;
@@ -489,7 +490,7 @@ async function storeScenes(releases, useBatchId) {
await associateDirectors(releasesWithId, batchId); // some directors may also be actors, don't associate at the same time
}
await updateSceneSearch(releasesWithId.map((release) => release.id));
// await updateSceneSearch(releasesWithId.map((release) => release.id));
// media is more error-prone, associate separately
await associateReleaseMedia(releasesWithId);
@@ -509,6 +510,4 @@ module.exports = {
associateMovieScenes,
storeScenes,
storeMovies,
updateSceneSearch,
updateMovieSearch,
};

View File

@@ -10,7 +10,7 @@ async function syncWeb(domain, ids) {
return;
}
await knex('sync').insert({ domain, item_ids: ids });
await knex('sync').insert({ domain, item_ids: Array.from(new Set(ids)) });
if (config.webApi.enabled) {
await unprint.post(`${config.webApi.address}/sync`, null, {