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 storedMovies = await storeMovies(deepMovies, storedScenes[0]?.batchId);
const storedMovieScenes = await storeScenes(deepMovieScenes, 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() })) 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 { associateReleaseTags } = require('./tags');
const { curateEntity } = require('./entities'); const { curateEntity } = require('./entities');
const { associateReleaseMedia } = require('./media'); 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 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 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) { async function associateSerieScenes(series, serieScenes) {
@@ -391,7 +391,7 @@ async function storeMovies(movies, useBatchId) {
const moviesWithId = attachReleaseIds(movies, storedMovies); const moviesWithId = attachReleaseIds(movies, storedMovies);
await associateReleaseTags(moviesWithId, 'movie'); await associateReleaseTags(moviesWithId, 'movie');
await updateMovieSearch(moviesWithId.map((movie) => movie.id)); // await updateMovieSearch(moviesWithId.map((movie) => movie.id));
await associateReleaseMedia(moviesWithId, 'movie'); 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 storedSeries = await bulkInsert('series', curatedSerieEntries, ['entity_id', 'entry_id'], true);
const seriesWithId = attachReleaseIds(series, storedSeries); 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'); await associateReleaseMedia(seriesWithId, 'serie');
return seriesWithId; 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 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 // media is more error-prone, associate separately
await associateReleaseMedia(releasesWithId); await associateReleaseMedia(releasesWithId);
@@ -509,6 +510,4 @@ module.exports = {
associateMovieScenes, associateMovieScenes,
storeScenes, storeScenes,
storeMovies, storeMovies,
updateSceneSearch,
updateMovieSearch,
}; };

View File

@@ -10,7 +10,7 @@ async function syncWeb(domain, ids) {
return; 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) { if (config.webApi.enabled) {
await unprint.post(`${config.webApi.address}/sync`, null, { await unprint.post(`${config.webApi.address}/sync`, null, {