diff --git a/airbyte-webapp/src/components/CreateConnectionContent/CreateConnectionContent.tsx b/airbyte-webapp/src/components/CreateConnectionContent/CreateConnectionContent.tsx index ff1d12e67b289..1b44072ee140e 100644 --- a/airbyte-webapp/src/components/CreateConnectionContent/CreateConnectionContent.tsx +++ b/airbyte-webapp/src/components/CreateConnectionContent/CreateConnectionContent.tsx @@ -51,7 +51,7 @@ const CreateConnectionContent: React.FC = ({ const { mutateAsync: createConnection } = useCreateConnection(); const analyticsService = useAnalyticsService(); - const { schema, isLoading, schemaErrorStatus, onDiscoverSchema } = useDiscoverSchema(source.sourceId); + const { schema, isLoading, schemaErrorStatus, catalogId, onDiscoverSchema } = useDiscoverSchema(source.sourceId); const connection = useMemo( () => ({ @@ -75,6 +75,7 @@ const CreateConnectionContent: React.FC = ({ name: destination?.name ?? "", destinationDefinitionId: destination?.destinationDefinitionId ?? "", }, + sourceCatalogId: catalogId, }); if (afterSubmitConnection) { diff --git a/airbyte-webapp/src/core/domain/catalog/api.ts b/airbyte-webapp/src/core/domain/catalog/api.ts index cbc02fcd9e729..993e3ef6163a0 100644 --- a/airbyte-webapp/src/core/domain/catalog/api.ts +++ b/airbyte-webapp/src/core/domain/catalog/api.ts @@ -5,6 +5,7 @@ import { JobInfo } from "../job"; export interface SourceDiscoverSchemaRead { catalog: SyncSchema; jobInfo?: JobInfo; + catalogId: string; } export type SchemaFields = JSONSchema7; diff --git a/airbyte-webapp/src/core/domain/connector/SourceService.ts b/airbyte-webapp/src/core/domain/connector/SourceService.ts index bed502bfae00b..52d797a0731a8 100644 --- a/airbyte-webapp/src/core/domain/connector/SourceService.ts +++ b/airbyte-webapp/src/core/domain/connector/SourceService.ts @@ -94,6 +94,7 @@ class SourceService extends AirbyteRequestService { return { catalog: result.catalog, jobInfo: result.jobInfo, + catalogId: result.sourceCatalogId, id: sourceId, }; } diff --git a/airbyte-webapp/src/hooks/services/useConnectionHook.tsx b/airbyte-webapp/src/hooks/services/useConnectionHook.tsx index 9c936204d1044..2cfeaa53900b8 100644 --- a/airbyte-webapp/src/hooks/services/useConnectionHook.tsx +++ b/airbyte-webapp/src/hooks/services/useConnectionHook.tsx @@ -43,6 +43,7 @@ type CreateConnectionProps = { destination?: Destination; sourceDefinition?: SourceDefinition | { name: string; sourceDefinitionId: string }; destinationDefinition?: { name: string; destinationDefinitionId: string }; + sourceCatalogId: string; }; type UpdateConnection = { diff --git a/airbyte-webapp/src/hooks/services/useSourceHook.tsx b/airbyte-webapp/src/hooks/services/useSourceHook.tsx index ada83df195ccb..b275b3998dbc2 100644 --- a/airbyte-webapp/src/hooks/services/useSourceHook.tsx +++ b/airbyte-webapp/src/hooks/services/useSourceHook.tsx @@ -175,10 +175,12 @@ const useDiscoverSchema = ( isLoading: boolean; schema: SyncSchema; schemaErrorStatus: { status: number; response: JobInfo } | null; + catalogId: string; onDiscoverSchema: () => Promise; } => { const service = useSourceService(); const [schema, setSchema] = useState({ streams: [] }); + const [catalogId, setCatalogId] = useState(""); const [isLoading, setIsLoading] = useState(false); const [schemaErrorStatus, setSchemaErrorStatus] = useState<{ status: number; @@ -191,6 +193,7 @@ const useDiscoverSchema = ( try { const data = await service.discoverSchema(sourceId || ""); setSchema(data.catalog); + setCatalogId(data.catalogId); } catch (e) { setSchemaErrorStatus(e); } finally { @@ -207,7 +210,7 @@ const useDiscoverSchema = ( })(); }, [onDiscoverSchema, sourceId]); - return { schemaErrorStatus, isLoading, schema, onDiscoverSchema }; + return { schemaErrorStatus, isLoading, schema, catalogId, onDiscoverSchema }; }; export { useSourceList, useGetSource, useCreateSource, useDeleteSource, useUpdateSource, useDiscoverSchema };