diff --git a/frontend/src/scenes/data-warehouse/external/forms/SyncProgressStep.tsx b/frontend/src/scenes/data-warehouse/external/forms/SyncProgressStep.tsx index 2432f349e3040..1e58314fdb862 100644 --- a/frontend/src/scenes/data-warehouse/external/forms/SyncProgressStep.tsx +++ b/frontend/src/scenes/data-warehouse/external/forms/SyncProgressStep.tsx @@ -3,28 +3,31 @@ import { useValues } from 'kea' import { sourceWizardLogic } from 'scenes/data-warehouse/new/sourceWizardLogic' import { dataWarehouseSettingsLogic } from 'scenes/data-warehouse/settings/dataWarehouseSettingsLogic' +import { ExternalDataSourceSchema } from '~/types' + export const SyncProgressStep = (): JSX.Element => { - const { databaseSchema, sourceId } = useValues(sourceWizardLogic) + const { sourceId } = useValues(sourceWizardLogic) const { dataWarehouseSources, dataWarehouseSourcesLoading } = useValues(dataWarehouseSettingsLogic) const source = dataWarehouseSources?.results.find((n) => n.id === sourceId) + const schemas = source?.schemas ?? [] - const getSyncStatus = (shouldSync: boolean): { status: string; tagType: LemonTagType } => { - if (!shouldSync) { + const getSyncStatus = (schema: ExternalDataSourceSchema): { status: string; tagType: LemonTagType } => { + if (!schema.should_sync) { return { status: 'Not synced', tagType: 'default', } } - if (!source || source.status === 'Running') { + if (schema.status === 'Running') { return { status: 'Syncing...', tagType: 'primary', } } - if (source.status === 'Completed') { + if (schema.status === 'Completed') { return { status: 'Completed', tagType: 'success', @@ -42,7 +45,7 @@ export const SyncProgressStep = (): JSX.Element => {
{ title: 'Table', key: 'table', render: function RenderTable(_, schema) { - return schema.table + return schema.name }, }, { title: 'Status', key: 'status', render: function RenderStatus(_, schema) { - const { status, tagType } = getSyncStatus(schema.should_sync) + const { status, tagType } = getSyncStatus(schema) return {status} }, diff --git a/frontend/src/scenes/data-warehouse/new/sourceWizardLogic.tsx b/frontend/src/scenes/data-warehouse/new/sourceWizardLogic.tsx index 2f400d9e14872..7ff85f473dd8f 100644 --- a/frontend/src/scenes/data-warehouse/new/sourceWizardLogic.tsx +++ b/frontend/src/scenes/data-warehouse/new/sourceWizardLogic.tsx @@ -448,6 +448,7 @@ export const sourceWizardLogic = kea([ lemonToast.success('New Data Resource Created') actions.setSourceId(id) actions.resetSourceConnectionDetails() + actions.loadSources(null) actions.onNext() } catch (e: any) { lemonToast.error(e.data?.message ?? e.message) diff --git a/posthog/warehouse/api/external_data_source.py b/posthog/warehouse/api/external_data_source.py index 36142a805938c..80576bc5da2d5 100644 --- a/posthog/warehouse/api/external_data_source.py +++ b/posthog/warehouse/api/external_data_source.py @@ -444,7 +444,7 @@ def database_schema(self, request: Request, *arg: Any, **kwargs: Any): }, ) - result_mapped_to_options = [{"table": row, "should_sync": False} for row in result] + result_mapped_to_options = [{"table": row, "should_sync": True} for row in result] return Response(status=status.HTTP_200_OK, data=result_mapped_to_options) # Return the possible endpoints for all other source types @@ -455,7 +455,7 @@ def database_schema(self, request: Request, *arg: Any, **kwargs: Any): data={"message": "Invalid parameter: source_type"}, ) - options = [{"table": row, "should_sync": False} for row in schemas] + options = [{"table": row, "should_sync": True} for row in schemas] return Response(status=status.HTTP_200_OK, data=options) @action(methods=["POST"], detail=False) diff --git a/posthog/warehouse/api/test/test_external_data_source.py b/posthog/warehouse/api/test/test_external_data_source.py index ef84a5e1bc8df..1c23807b82328 100644 --- a/posthog/warehouse/api/test/test_external_data_source.py +++ b/posthog/warehouse/api/test/test_external_data_source.py @@ -228,7 +228,7 @@ def test_internal_postgres(self, patch_get_postgres_schemas): }, ) self.assertEqual(response.status_code, 200) - self.assertEqual(response.json(), [{"should_sync": False, "table": "table_1"}]) + self.assertEqual(response.json(), [{"should_sync": True, "table": "table_1"}]) new_team = Team.objects.create(name="new_team", organization=self.team.organization) @@ -262,7 +262,7 @@ def test_internal_postgres(self, patch_get_postgres_schemas): }, ) self.assertEqual(response.status_code, 200) - self.assertEqual(response.json(), [{"should_sync": False, "table": "table_1"}]) + self.assertEqual(response.json(), [{"should_sync": True, "table": "table_1"}]) new_team = Team.objects.create(name="new_team", organization=self.team.organization)