Sorting aggregates by slug or lowercased name to avoid capitalization issues. Fixed slug getting interpreted as ID by cache lookup.

This commit is contained in:
DebaucheryLibrarian 2024-03-27 23:54:23 +01:00
parent 768ab41ee7
commit 22c4bb0405
4 changed files with 9 additions and 7 deletions

View File

@ -22,7 +22,7 @@ export async function onBeforeRender(pageContext) {
return { return {
pageContext: { pageContext: {
title: `Search '${pageContext.urlParsed.search.q}'`, title: `Search '${pageContext.urlParsed.search.q || ''}'`,
pageProps: { pageProps: {
scenes, scenes,
aggActors, aggActors,

View File

@ -6,9 +6,11 @@ export async function getIdsBySlug(slugs, domain) {
return null; return null;
} }
/* this, naturally, fails if the slug is 69 etc.
if (Number(slug)) { if (Number(slug)) {
return Number(slug); // already an ID or missing return Number(slug); // already an ID or missing
} }
*/
const id = await redis.hGet(`traxxx:${domain}:id_by_slug`, slug); const id = await redis.hGet(`traxxx:${domain}:id_by_slug`, slug);

View File

@ -532,9 +532,9 @@ export async function fetchMovies(filters, rawOptions, reqUser) {
const channelCounts = options.aggregateChannels && countAggregations(result.aggregations?.channelIds); const channelCounts = options.aggregateChannels && countAggregations(result.aggregations?.channelIds);
const [aggActors, aggTags, aggChannels] = await Promise.all([ const [aggActors, aggTags, aggChannels] = await Promise.all([
options.aggregateActors ? fetchActorsById(result.aggregations.actorIds.map((bucket) => bucket.key), { order: ['name', 'asc'], append: actorCounts }) : [], options.aggregateActors ? fetchActorsById(result.aggregations.actorIds.map((bucket) => bucket.key), { order: ['slug', 'asc'], append: actorCounts }) : [],
options.aggregateTags ? fetchTagsById(result.aggregations.tagIds.map((bucket) => bucket.key), { order: ['name', 'asc'], append: tagCounts }) : [], options.aggregateTags ? fetchTagsById(result.aggregations.tagIds.map((bucket) => bucket.key), { order: [knex.raw('lower(name)'), 'asc'], append: tagCounts }) : [],
options.aggregateChannels ? fetchEntitiesById(result.aggregations.channelIds.map((bucket) => bucket.key), { order: ['name', 'asc'], append: channelCounts }) : [], options.aggregateChannels ? fetchEntitiesById(result.aggregations.channelIds.map((bucket) => bucket.key), { order: ['slug', 'asc'], append: channelCounts }) : [],
]); ]);
const movieIds = result.movies.map((movie) => Number(movie.id)); const movieIds = result.movies.map((movie) => Number(movie.id));

View File

@ -574,9 +574,9 @@ export async function fetchScenes(filters, rawOptions, reqUser) {
console.time('fetch aggregations'); console.time('fetch aggregations');
const [aggActors, aggTags, aggChannels] = await Promise.all([ const [aggActors, aggTags, aggChannels] = await Promise.all([
options.aggregateActors ? fetchActorsById(result.aggregations.actorIds.map((bucket) => bucket.key), { order: ['name', 'asc'], append: actorCounts }) : [], options.aggregateActors ? fetchActorsById(result.aggregations.actorIds.map((bucket) => bucket.key), { order: ['slug', 'asc'], append: actorCounts }) : [],
options.aggregateTags ? fetchTagsById(result.aggregations.tagIds.map((bucket) => bucket.key), { order: ['name', 'asc'], append: tagCounts }) : [], options.aggregateTags ? fetchTagsById(result.aggregations.tagIds.map((bucket) => bucket.key), { order: [knex.raw('lower(name)'), 'asc'], append: tagCounts }) : [],
options.aggregateChannels ? fetchEntitiesById(result.aggregations.channelIds.map((bucket) => bucket.key), { order: ['name', 'asc'], append: channelCounts }) : [], options.aggregateChannels ? fetchEntitiesById(result.aggregations.channelIds.map((bucket) => bucket.key), { order: ['slug', 'asc'], append: channelCounts }) : [],
]); ]);
console.timeEnd('fetch aggregations'); console.timeEnd('fetch aggregations');