mirror of
https://github.com/zoriya/Kyoo.git
synced 2025-05-31 04:04:21 -04:00
Add original translation support on the /movies/{id} route
This commit is contained in:
parent
f3f69a0def
commit
7fcaf6490d
@ -69,12 +69,29 @@ export const movies = new Elysia({ prefix: "/movies", tags: ["movies"] })
|
|||||||
columns: {
|
columns: {
|
||||||
pk: false,
|
pk: false,
|
||||||
},
|
},
|
||||||
where: eq(showTranslations.language, sql`any(${sqlarr(langs)})`),
|
where: !langs.includes("*")
|
||||||
|
? eq(showTranslations.language, sql`any(${sqlarr(langs)})`)
|
||||||
|
: undefined,
|
||||||
orderBy: [
|
orderBy: [
|
||||||
sql`array_position(${sqlarr(langs)}, ${showTranslations.language})`,
|
sql`array_position(${sqlarr(langs)}, ${showTranslations.language})`,
|
||||||
],
|
],
|
||||||
limit: 1,
|
limit: 1,
|
||||||
},
|
},
|
||||||
|
originalTranslation: {
|
||||||
|
columns: {
|
||||||
|
poster: true,
|
||||||
|
thumbnail: true,
|
||||||
|
banner: true,
|
||||||
|
logo: true,
|
||||||
|
},
|
||||||
|
extras: {
|
||||||
|
// TODO: also fallback on user settings (that's why i made a select here)
|
||||||
|
preferOriginal:
|
||||||
|
sql<boolean>`(select coalesce(${preferOriginal ?? null}::boolean, false))`.as(
|
||||||
|
"preferOriginal",
|
||||||
|
),
|
||||||
|
},
|
||||||
|
},
|
||||||
},
|
},
|
||||||
});
|
});
|
||||||
|
|
||||||
@ -92,7 +109,13 @@ export const movies = new Elysia({ prefix: "/movies", tags: ["movies"] })
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
set.headers["content-language"] = translation.language;
|
set.headers["content-language"] = translation.language;
|
||||||
return { ...ret, ...translation };
|
return {
|
||||||
|
...ret,
|
||||||
|
...translation,
|
||||||
|
...(ret.originalTranslation?.preferOriginal
|
||||||
|
? ret.originalTranslation
|
||||||
|
: {}),
|
||||||
|
};
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
detail: {
|
detail: {
|
||||||
|
@ -109,8 +109,13 @@ export const showTranslations = schema.table(
|
|||||||
(t) => [primaryKey({ columns: [t.pk, t.language] })],
|
(t) => [primaryKey({ columns: [t.pk, t.language] })],
|
||||||
);
|
);
|
||||||
|
|
||||||
export const showsRelations = relations(shows, ({ many }) => ({
|
export const showsRelations = relations(shows, ({ many, one }) => ({
|
||||||
translations: many(showTranslations, { relationName: "showTranslations" }),
|
translations: many(showTranslations, { relationName: "showTranslations" }),
|
||||||
|
originalTranslation: one(showTranslations, {
|
||||||
|
relationName: "originalTranslation",
|
||||||
|
fields: [shows.pk, shows.originalLanguage],
|
||||||
|
references: [showTranslations.pk, showTranslations.language],
|
||||||
|
}),
|
||||||
}));
|
}));
|
||||||
export const showsTrRelations = relations(showTranslations, ({ one }) => ({
|
export const showsTrRelations = relations(showTranslations, ({ one }) => ({
|
||||||
show: one(shows, {
|
show: one(shows, {
|
||||||
@ -118,4 +123,9 @@ export const showsTrRelations = relations(showTranslations, ({ one }) => ({
|
|||||||
fields: [showTranslations.pk],
|
fields: [showTranslations.pk],
|
||||||
references: [shows.pk],
|
references: [shows.pk],
|
||||||
}),
|
}),
|
||||||
|
originalTranslation: one(shows, {
|
||||||
|
relationName: "originalTranslation",
|
||||||
|
fields: [showTranslations.pk, showTranslations.language],
|
||||||
|
references: [shows.pk, shows.originalLanguage],
|
||||||
|
}),
|
||||||
}));
|
}));
|
||||||
|
Loading…
x
Reference in New Issue
Block a user