From 4157d3cbeec4db39633e30808635e97d5220feda Mon Sep 17 00:00:00 2001 From: Darshan Date: Wed, 18 Jun 2025 18:55:21 +0530 Subject: [PATCH] add: old to new redirects. --- .../project-[region]-[project]/+error.svelte | 4 +- .../database-[database]/[...rest]/+page.ts | 41 +++++++++++++++++++ 2 files changed, 44 insertions(+), 1 deletion(-) create mode 100644 src/routes/(console)/project-[region]-[project]/databases/database-[database]/[...rest]/+page.ts diff --git a/src/routes/(console)/project-[region]-[project]/+error.svelte b/src/routes/(console)/project-[region]-[project]/+error.svelte index 3f5197414..047998b91 100644 --- a/src/routes/(console)/project-[region]-[project]/+error.svelte +++ b/src/routes/(console)/project-[region]-[project]/+error.svelte @@ -6,6 +6,7 @@ import { capitalize } from '$lib/helpers/string'; import { currentPlan } from '$lib/stores/organization'; import { wizard } from '$lib/stores/wizard'; + function getResource(id: string) { id = id.replace('/(console)/project-[region]-[project]/', ''); let parts = id.split('/'); @@ -39,6 +40,7 @@ >{'status' in page.error ? page.error.status || 'Invalid Argument' : 'Invalid Argument'} -

{page.error.message}

+ + {page.error.message} {/if} diff --git a/src/routes/(console)/project-[region]-[project]/databases/database-[database]/[...rest]/+page.ts b/src/routes/(console)/project-[region]-[project]/databases/database-[database]/[...rest]/+page.ts new file mode 100644 index 000000000..bc5f06032 --- /dev/null +++ b/src/routes/(console)/project-[region]-[project]/databases/database-[database]/[...rest]/+page.ts @@ -0,0 +1,41 @@ +import { base } from '$app/paths'; +import type { PageLoad } from './$types'; +import { redirect } from '@sveltejs/kit'; +import { AppwriteException } from '@appwrite.io/console'; + +const LEGACY_ROUTE_MAPPINGS = [ + { pattern: /^collection-([^/]+)/, replacement: 'table-$1' }, + { pattern: /^document-([^/]+)/, replacement: 'row-$1' }, + { pattern: /^attribute-([^/]+)/, replacement: 'column-$1' } +] as const; + +function isLegacyRoute(segments: string[]): boolean { + return segments.some((segment) => + LEGACY_ROUTE_MAPPINGS.some((mapping) => mapping.pattern.test(segment)) + ); +} + +function rewriteLegacySegments(segments: string[]): string[] { + return segments.map((segment) => { + for (const mapping of LEGACY_ROUTE_MAPPINGS) { + if (mapping.pattern.test(segment)) { + return segment.replace(mapping.pattern, mapping.replacement); + } + } + return segment; + }); +} + +export const load: PageLoad = async ({ params, url }) => { + const restSegments = params.rest ? params.rest.split('/').filter(Boolean) : []; + const baseUrl = `${base}/project-${params.region}-${params.project}/databases/database-${params.database}`; + + if (isLegacyRoute(restSegments)) { + const rewrittenSegments = rewriteLegacySegments(restSegments); + const newPath = `${baseUrl}/${rewrittenSegments.join('/')}`; + + redirect(308, newPath + url.search); + } + + throw new AppwriteException('Not Found', 404); +};