From be061b956e4c3688f791ef8b0fd3f3b09db726ee Mon Sep 17 00:00:00 2001 From: DebaucheryLibrarian Date: Sun, 1 Mar 2026 05:14:32 +0100 Subject: [PATCH] Skipping joins for aggregated actor fetch. --- src/actors.js | 42 +++++++++++++++++++++++------------------- 1 file changed, 23 insertions(+), 19 deletions(-) diff --git a/src/actors.js b/src/actors.js index 400d917..5eccce0 100644 --- a/src/actors.js +++ b/src/actors.js @@ -208,30 +208,34 @@ export function sortActorsByGender(actors, context = {}) { export async function fetchActorsById(actorIds, options = {}, reqUser) { const [actors, profiles, photos, socials, stashes, alerts] = await Promise.all([ knex('actors') - .select( - 'actors.*', - 'actors_meta.stashed', - knex.raw('row_to_json(avatars) as avatar'), - 'birth_countries.alpha2 as birth_country_alpha2', - knex.raw('COALESCE(birth_countries.alias, birth_countries.name) as birth_country_name'), - 'residence_countries.alpha2 as residence_country_alpha2', - knex.raw('COALESCE(residence_countries.alias, residence_countries.name) as residence_country_name'), - knex.raw('row_to_json(entities) as entity'), - knex.raw('row_to_json(sfw_media) as sfw_avatar'), - ) - .leftJoin('actors_meta', 'actors_meta.actor_id', 'actors.id') - .leftJoin('countries as birth_countries', 'birth_countries.alpha2', 'actors.birth_country_alpha2') - .leftJoin('countries as residence_countries', 'residence_countries.alpha2', 'actors.residence_country_alpha2') - .leftJoin('media as avatars', 'avatars.id', 'actors.avatar_media_id') - .leftJoin('media as sfw_media', 'sfw_media.id', 'avatars.sfw_media_id') - .leftJoin('entities', 'entities.id', 'actors.entity_id') + .select('actors.*') .whereIn('actors.id', actorIds) .modify((builder) => { if (options.order) { builder.orderBy(...options.order); } - }) - .groupBy('actors.id', 'avatars.id', 'sfw_media.id', 'entities.id', 'actors_meta.stashed', 'birth_countries.alpha2', 'residence_countries.alpha2'), + + if (!options.shallow) { + builder + .select( + 'actors_meta.stashed', + knex.raw('row_to_json(avatars) as avatar'), + 'birth_countries.alpha2 as birth_country_alpha2', + knex.raw('COALESCE(birth_countries.alias, birth_countries.name) as birth_country_name'), + 'residence_countries.alpha2 as residence_country_alpha2', + knex.raw('COALESCE(residence_countries.alias, residence_countries.name) as residence_country_name'), + knex.raw('row_to_json(entities) as entity'), + knex.raw('row_to_json(sfw_media) as sfw_avatar'), + ) + .leftJoin('actors_meta', 'actors_meta.actor_id', 'actors.id') + .leftJoin('countries as birth_countries', 'birth_countries.alpha2', 'actors.birth_country_alpha2') + .leftJoin('countries as residence_countries', 'residence_countries.alpha2', 'actors.residence_country_alpha2') + .leftJoin('media as avatars', 'avatars.id', 'actors.avatar_media_id') + .leftJoin('media as sfw_media', 'sfw_media.id', 'avatars.sfw_media_id') + .leftJoin('entities', 'entities.id', 'actors.entity_id') + .groupBy('actors.id', 'avatars.id', 'sfw_media.id', 'entities.id', 'actors_meta.stashed', 'birth_countries.alpha2', 'residence_countries.alpha2'); + } + }), knex('actors_profiles') .select( 'actors_profiles.*',