From 91f59cf18387794f69cf17703b04574455d3bd76 Mon Sep 17 00:00:00 2001 From: Jiralite <33201955+Jiralite@users.noreply.github.com> Date: Sun, 12 Jan 2025 18:09:46 +0000 Subject: [PATCH] fix(fetchVersions): Sort package versions (#10695) * fix(fetchVersions): sort package versions * fix(middleware): fix stable redirect --- apps/website/src/middleware.ts | 7 +++++-- apps/website/src/util/fetchLatestVersion.ts | 16 ---------------- apps/website/src/util/fetchVersions.ts | 11 ++++++++++- 3 files changed, 15 insertions(+), 19 deletions(-) delete mode 100644 apps/website/src/util/fetchLatestVersion.ts diff --git a/apps/website/src/middleware.ts b/apps/website/src/middleware.ts index f963e6751..1bd4ceb2e 100644 --- a/apps/website/src/middleware.ts +++ b/apps/website/src/middleware.ts @@ -9,9 +9,12 @@ async function fetchLatestVersion(packageName: string): Promise { } try { - const { rows } = await sql`select version from documentation where name = ${packageName} order by version desc`; + const { rows } = await sql<{ version: string }>`with ordered_versions as ( + select version from documentation where name = ${packageName} and version != 'main' order by string_to_array(version, '.')::int[] desc + ) + select version from ordered_versions limit 1`; - return rows.map((row) => row.version).at(1) ?? 'main'; + return rows[0]?.version ?? 'main'; } catch { return ''; } diff --git a/apps/website/src/util/fetchLatestVersion.ts b/apps/website/src/util/fetchLatestVersion.ts deleted file mode 100644 index c109bb2ed..000000000 --- a/apps/website/src/util/fetchLatestVersion.ts +++ /dev/null @@ -1,16 +0,0 @@ -import { sql } from '@vercel/postgres'; -import { ENV } from './env'; - -export async function fetchLatestVersion(packageName: string): Promise { - if (ENV.IS_LOCAL_DEV) { - return 'main'; - } - - try { - const { rows } = await sql`select version from documentation where name = ${packageName} order by version desc`; - - return rows.map((row) => row.version).at(1) ?? 'main'; - } catch { - return ''; - } -} diff --git a/apps/website/src/util/fetchVersions.ts b/apps/website/src/util/fetchVersions.ts index 89c6007c2..69e1af894 100644 --- a/apps/website/src/util/fetchVersions.ts +++ b/apps/website/src/util/fetchVersions.ts @@ -9,7 +9,16 @@ export async function fetchVersions(packageName: string) { try { const { rows } = await sql<{ version: string; - }>`select version from documentation where name = ${packageName} order by version desc`; + }>`select version from documentation where name = ${packageName} order by + case + when version = 'main' then 0 + else 1 + end, + case + when version = 'main' then null + else string_to_array(version, '.')::int[] + end desc; + `; return rows; } catch {