Replaced double left join with lateral join in scene affiliate SQL.

This commit is contained in:
DebaucheryLibrarian 2026-01-20 03:34:44 +01:00
parent edb4be379f
commit 34348890ec
1 changed files with 12 additions and 4 deletions

View File

@ -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'),