From 26410734fc49ed7baf9f174f7d78c462965b80fa Mon Sep 17 00:00:00 2001 From: Zoe Roux Date: Mon, 23 Jun 2025 01:49:10 +0200 Subject: [PATCH] Ensure stable sort when no lang is specified --- api/src/controllers/shows/logic.ts | 2 ++ api/src/models/utils/language.ts | 10 ++++++---- 2 files changed, 8 insertions(+), 4 deletions(-) diff --git a/api/src/controllers/shows/logic.ts b/api/src/controllers/shows/logic.ts index 7a1ceebf..eb09ee8a 100644 --- a/api/src/controllers/shows/logic.ts +++ b/api/src/controllers/shows/logic.ts @@ -271,6 +271,8 @@ export async function getShows({ .orderBy( showTranslations.pk, sql`array_position(${sqlarr(languages)}, ${showTranslations.language})`, + // ensure a stable sort to prevent future pages to contains the same element again + showTranslations.language, ) .as("t"); diff --git a/api/src/models/utils/language.ts b/api/src/models/utils/language.ts index 0de608b0..ee86cc40 100644 --- a/api/src/models/utils/language.ts +++ b/api/src/models/utils/language.ts @@ -4,7 +4,7 @@ import { type TSchema, type TString, } from "@sinclair/typebox"; -import { type Column, type Table, eq, sql } from "drizzle-orm"; +import { type Column, eq, sql, type Table } from "drizzle-orm"; import { t } from "elysia"; import { sqlarr } from "~/db/utils"; import { comment } from "../../utils"; @@ -74,7 +74,7 @@ export const TranslationRecord = ( .Encode((x) => x); export const processLanguages = (languages?: string) => { - if (!languages) return ["*"]; + if (!languages) return ["en", "*"]; return languages .split(",") .map((x) => { @@ -91,9 +91,11 @@ export const processLanguages = (languages?: string) => { export const AcceptLanguage = ({ autoFallback = false, -}: { autoFallback?: boolean } = {}) => +}: { + autoFallback?: boolean; +} = {}) => t.String({ - default: "*", + default: "en, *", example: "en-us, ja;q=0.5", description: comment`