From db465c1a8b8e9a098fff3841e06b4cebc3b7d073 Mon Sep 17 00:00:00 2001 From: Darshan Date: Mon, 3 Nov 2025 18:25:14 +0530 Subject: [PATCH] update: move realtime to specific pages. --- src/lib/stores/sdk.ts | 1 - .../table-[table]/+layout.svelte | 28 +++---------------- .../table-[table]/columns/+page.svelte | 14 ++++++++++ .../table-[table]/columns/deleteColumn.svelte | 3 -- .../table-[table]/indexes/+page.svelte | 9 ++++++ .../table-[table]/spreadsheet.svelte | 2 +- .../table-[table]/store.ts | 6 ++++ 7 files changed, 34 insertions(+), 29 deletions(-) diff --git a/src/lib/stores/sdk.ts b/src/lib/stores/sdk.ts index 92c5a53cf..daeb7ffba 100644 --- a/src/lib/stores/sdk.ts +++ b/src/lib/stores/sdk.ts @@ -111,7 +111,6 @@ if (!building) { scopedConsoleClient.setProject('console'); clientConsole.setEndpoint(endpoint).setProject('console'); - clientRealtime.setEndpoint(endpoint).setProject('console'); clientProject.setEndpoint(endpoint).setMode('admin'); clientRealtime.setEndpoint(endpoint).setProject('console'); } diff --git a/src/routes/(console)/project-[region]-[project]/databases/database-[database]/table-[table]/+layout.svelte b/src/routes/(console)/project-[region]-[project]/databases/database-[database]/table-[table]/+layout.svelte index f5908ae50..b8ab6faf3 100644 --- a/src/routes/(console)/project-[region]-[project]/databases/database-[database]/table-[table]/+layout.svelte +++ b/src/routes/(console)/project-[region]-[project]/databases/database-[database]/table-[table]/+layout.svelte @@ -36,6 +36,7 @@ expandTabs, databaseRelatedRowSheetOptions, rowPermissionSheet, + isWaterfallFromFaker, type Columns } from './store'; import { addSubPanel, registerCommands, updateCommandGroupRanks } from '$lib/commandCenter'; @@ -65,7 +66,6 @@ import { Submit, trackEvent } from '$lib/actions/analytics'; import IndexesSuggestions from '../(suggestions)/indexes.svelte'; - import { showIndexesSuggestions, tableColumnSuggestions } from '../(suggestions)'; let editRow: EditRow; let editRelatedRow: EditRelatedRow; @@ -76,12 +76,6 @@ let selectedOption: Option['name'] = 'String'; let createMoreColumns = false; - /** - * adding a lot of fake data will trigger the realtime below - * and will keep invalidating the `Dependencies.TABLE` making a lot of API noise! - */ - let isWaterfallFromFaker = false; - let columnCreationHandler: ((response: RealtimeResponse) => void) | null = null; onMount(() => { @@ -92,21 +86,9 @@ response.events.includes('databases.*.tables.*.columns.*') || response.events.includes('databases.*.tables.*.indexes.*') ) { - if (isWaterfallFromFaker) { + if ($isWaterfallFromFaker) { columnCreationHandler?.(response); } - - // don't invalidate when - - // 1. from faker - // 2. ai columns creation - // 3. ai indexes creation - if ( - !isWaterfallFromFaker && - !$showIndexesSuggestions && - !$tableColumnSuggestions.table - ) { - invalidate(Dependencies.TABLE); - } } }); }); @@ -308,7 +290,7 @@ } async function createFakeData() { - isWaterfallFromFaker = true; + isWaterfallFromFaker.set(true); $spreadsheetLoading = true; $randomDataModalState.show = false; @@ -386,10 +368,8 @@ $randomDataModalState.value = 25; } - /* api is too fast! */ - // await sleep(1250); $spreadsheetLoading = false; - isWaterfallFromFaker = false; + isWaterfallFromFaker.set(false); spreadsheetRenderKey.set(hash(rowIds)); } diff --git a/src/routes/(console)/project-[region]-[project]/databases/database-[database]/table-[table]/columns/+page.svelte b/src/routes/(console)/project-[region]-[project]/databases/database-[database]/table-[table]/columns/+page.svelte index 5ee690f49..914eeb1e1 100644 --- a/src/routes/(console)/project-[region]-[project]/databases/database-[database]/table-[table]/columns/+page.svelte +++ b/src/routes/(console)/project-[region]-[project]/databases/database-[database]/table-[table]/columns/+page.svelte @@ -23,6 +23,7 @@ type ColumnsWidth, indexes, isCsvImportInProgress, + isWaterfallFromFaker, reorderItems, showCreateIndexSheet } from '../store'; @@ -55,6 +56,9 @@ import { page } from '$app/state'; import { debounce } from '$lib/helpers/debounce'; import type { PageData } from './$types'; + import { realtime } from '$lib/stores/sdk'; + import { invalidate } from '$app/navigation'; + import { Dependencies } from '$lib/constants'; const { data @@ -140,6 +144,16 @@ onMount(() => { columnsOrder = preferences.getColumnOrder(tableId); columnsWidth = preferences.getColumnWidths(tableId + '#columns'); + + return realtime.forProject(page.params.region, ['project', 'console'], async (response) => { + if ( + response.events.includes('databases.*.tables.*.columns.*.delete') || + (response.events.includes('databases.*.tables.*.columns.*.update') && + !$isWaterfallFromFaker) + ) { + await invalidate(Dependencies.TABLE); + } + }); }); function getColumnStatusBadge(status: string): ComponentProps['type'] { diff --git a/src/routes/(console)/project-[region]-[project]/databases/database-[database]/table-[table]/columns/deleteColumn.svelte b/src/routes/(console)/project-[region]-[project]/databases/database-[database]/table-[table]/columns/deleteColumn.svelte index 19d9f19d2..7b72bd20b 100644 --- a/src/routes/(console)/project-[region]-[project]/databases/database-[database]/table-[table]/columns/deleteColumn.svelte +++ b/src/routes/(console)/project-[region]-[project]/databases/database-[database]/table-[table]/columns/deleteColumn.svelte @@ -1,5 +1,4 @@