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 {