From 34348890ecb5c59229152f8222b06cca28ebaee3 Mon Sep 17 00:00:00 2001 From: DebaucheryLibrarian Date: Tue, 20 Jan 2026 03:34:44 +0100 Subject: [PATCH] Replaced double left join with lateral join in scene affiliate SQL. --- src/scenes.js | 16 ++++++++++++---- 1 file changed, 12 insertions(+), 4 deletions(-) diff --git a/src/scenes.js b/src/scenes.js index 8fe31ed..9667045 100644 --- a/src/scenes.js +++ b/src/scenes.js @@ -194,14 +194,22 @@ export async function fetchScenesById(sceneIds, { reqUser, ...context } = {}) { 'networks.name as network_name', 'networks.type as network_type', 'networks.has_logo as network_has_logo', - knex.raw('row_to_json(coalesce(channel_affiliates, network_affiliates)) as affiliate'), + knex.raw('row_to_json(affiliates) as affiliate'), ) .whereIn('releases.id', sceneIds) .leftJoin('entities as channels', 'channels.id', 'releases.entity_id') .leftJoin('entities as networks', 'networks.id', 'channels.parent_id') - .leftJoin('affiliates as channel_affiliates', 'channel_affiliates.entity_id', 'channels.id') - .leftJoin('affiliates as network_affiliates', 'network_affiliates.entity_id', 'networks.id') - .groupBy('channels.id', 'networks.id', 'channel_affiliates.id', 'network_affiliates.id'), + // .leftJoin('affiliates as channel_affiliates', 'channel_affiliates.entity_id', 'channels.id') + // .leftJoin('affiliates as network_affiliates', 'network_affiliates.entity_id', 'networks.id') + .joinRaw(` + left join lateral ( + select * + from affiliates + where affiliates.entity_id in (channels.id, networks.id) + order by (affiliates.entity_id = channels.id) desc + limit 1 + ) affiliates ON TRUE + `), studios: knex('releases') .whereIn('releases.id', sceneIds) .leftJoin('entities as studios', 'studios.id', 'releases.studio_id'),