Fix preferOriginal

This commit is contained in:
Zoe Roux 2025-03-08 15:50:24 +01:00
parent 3f188e27a1
commit ac7b589d76
No known key found for this signature in database

View File

@ -29,7 +29,10 @@ export const showFilters: FilterDef = {
airDate: { column: shows.startAir, type: "date" }, airDate: { column: shows.startAir, type: "date" },
startAir: { column: shows.startAir, type: "date" }, startAir: { column: shows.startAir, type: "date" },
endAir: { column: shows.startAir, type: "date" }, endAir: { column: shows.startAir, type: "date" },
originalLanguage: { column: shows.originalLanguage, type: "string" }, originalLanguage: {
column: sql`${shows.original}->'language'`,
type: "string",
},
tags: { tags: {
column: sql.raw(`t.${showTranslations.tags.name}`), column: sql.raw(`t.${showTranslations.tags.name}`),
type: "string", type: "string",
@ -59,7 +62,7 @@ export async function getShows({
sort, sort,
filter, filter,
languages, languages,
preferOriginal, preferOriginal = false,
}: { }: {
after: string | undefined; after: string | undefined;
limit: number; limit: number;
@ -67,7 +70,7 @@ export async function getShows({
sort: StaticDecode<typeof showSort>; sort: StaticDecode<typeof showSort>;
filter: SQL | undefined; filter: SQL | undefined;
languages: string[]; languages: string[];
preferOriginal: boolean | undefined; preferOriginal?: boolean;
}) { }) {
const transQ = db const transQ = db
.selectDistinctOn([showTranslations.pk]) .selectDistinctOn([showTranslations.pk])
@ -77,8 +80,7 @@ export async function getShows({
sql`array_position(${sqlarr(languages)}, ${showTranslations.language})`, sql`array_position(${sqlarr(languages)}, ${showTranslations.language})`,
) )
.as("t"); .as("t");
const { pk, poster, thumbnail, banner, logo, ...transCol } = const { pk, ...transCol } = getColumns(transQ);
getColumns(transQ);
return await db return await db
.select({ .select({
@ -90,21 +92,15 @@ export async function getShows({
kind: sql<any>`${shows.kind}`, kind: sql<any>`${shows.kind}`,
isAvailable: sql<boolean>`${shows.availableCount} != 0`, isAvailable: sql<boolean>`${shows.availableCount} != 0`,
poster: sql<Image>`coalesce(${showTranslations.poster}, ${poster})`, ...(preferOriginal && {
thumbnail: sql<Image>`coalesce(${showTranslations.thumbnail}, ${thumbnail})`, poster: sql<Image>`coalesce(${shows.original}->'poster', ${showTranslations.poster})`,
banner: sql<Image>`coalesce(${showTranslations.banner}, ${banner})`, thumbnail: sql<Image>`coalesce(${shows.original}->'thumbnail', ${showTranslations.thumbnail})`,
logo: sql<Image>`coalesce(${showTranslations.logo}, ${logo})`, banner: sql<Image>`coalesce(${shows.original}->'banner', ${showTranslations.banner})`,
logo: sql<Image>`coalesce(${shows.original}->'logo', ${showTranslations.logo})`,
}),
}) })
.from(shows) .from(shows)
.innerJoin(transQ, eq(shows.pk, transQ.pk)) .innerJoin(transQ, eq(shows.pk, transQ.pk))
.leftJoin(
showTranslations,
and(
sql`${preferOriginal ?? false}`,
eq(shows.pk, showTranslations.pk),
eq(showTranslations.language, shows.originalLanguage),
),
)
.where( .where(
and( and(
filter, filter,