Skip to content

Commit d0367fb

Browse files
Varun-Choudharym4ttheweric
authored andcommitted
Console: Preserve connection template and connection set during Postgres source edits
PR-URL: hasura/graphql-engine-mono#11190 Co-authored-by: Matthew Goodwin <[email protected]> GitOrigin-RevId: 1bc98e4b8a2da3d55f71b9331a8f8822eee3f8c8
1 parent 0c95fd6 commit d0367fb

File tree

2 files changed

+39
-8
lines changed

2 files changed

+39
-8
lines changed

frontend/libs/console/legacy-ce/src/lib/features/ConnectDBRedesign/components/ConnectPostgresWidget/ConnectPostgresWidget.tsx

Lines changed: 32 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,34 @@
1+
import { useEffect, useState } from 'react';
2+
import { Button } from '../../../../new-components/Button';
13
import { useConsoleForm } from '../../../../new-components/Form';
2-
import { getDefaultValues, PostgresConnectionSchema, schema } from './schema';
3-
import { useManageDatabaseConnection } from '../../hooks/useManageDatabaseConnection';
4+
import { Tabs } from '../../../../new-components/Tabs';
45
import { hasuraToast } from '../../../../new-components/Toasts';
56
import { useMetadata } from '../../../hasura-metadata-api';
6-
import { generatePostgresRequestPayload } from './utils/generateRequests';
7-
import { useEffect, useState } from 'react';
8-
import { LimitedFeatureWrapper } from '../LimitedFeatureWrapper/LimitedFeatureWrapper';
9-
import { DynamicDBRouting } from './parts/DynamicDBRouting';
10-
import { Tabs } from '../../../../new-components/Tabs';
7+
import { Source } from '../../../hasura-metadata-types/source/source';
8+
import { useManageDatabaseConnection } from '../../hooks/useManageDatabaseConnection';
119
import { DisplayToastErrorMessage } from '../Common/DisplayToastErrorMessage';
10+
import { LimitedFeatureWrapper } from '../LimitedFeatureWrapper/LimitedFeatureWrapper';
1211
import { ConnectPostgresForm } from './parts/ConnectPostgresForm';
13-
import { Button } from '../../../../new-components/Button';
12+
import { DynamicDBRouting } from './parts/DynamicDBRouting';
13+
import { getDefaultValues, PostgresConnectionSchema, schema } from './schema';
14+
import { generatePostgresRequestPayload } from './utils/generateRequests';
15+
16+
type PostgresLikeSource = Extract<
17+
Source,
18+
{
19+
kind: 'postgres' | 'citus' | 'cockroach';
20+
}
21+
>;
22+
23+
const isPostgresLikeSource = (
24+
source: Source | undefined
25+
): source is PostgresLikeSource => {
26+
return (
27+
source?.kind === 'postgres' ||
28+
source?.kind === 'citus' ||
29+
source?.kind === 'cockroach'
30+
);
31+
};
1432

1533
interface ConnectPostgresWidgetProps {
1634
dataSourceName?: string;
@@ -53,6 +71,12 @@ export const ConnectPostgresWidget = (props: ConnectPostgresWidgetProps) => {
5371
const payload = generatePostgresRequestPayload({
5472
driver: overrideDriver ?? 'postgres',
5573
values: formValues,
74+
connectionTemplate: isPostgresLikeSource(metadataSource)
75+
? metadataSource.configuration.connection_template
76+
: undefined,
77+
connectionSet: isPostgresLikeSource(metadataSource)
78+
? metadataSource.configuration.connection_set
79+
: undefined,
5680
});
5781

5882
if (isEditMode) {

frontend/libs/console/legacy-ce/src/lib/features/ConnectDBRedesign/components/ConnectPostgresWidget/utils/generateRequests.ts

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
import { PostgresConfiguration } from '../../../../hasura-metadata-types';
12
import { DatabaseConnection } from '../../../types';
23
import { generateGraphQLCustomizationInfo } from '../../GraphQLCustomization/utils/generateRequest';
34
import { PostgresConnectionSchema } from '../schema';
@@ -52,9 +53,13 @@ export const generateConnectionInfo = (
5253
export const generatePostgresRequestPayload = ({
5354
driver,
5455
values,
56+
connectionTemplate,
57+
connectionSet,
5558
}: {
5659
driver: string;
5760
values: PostgresConnectionSchema;
61+
connectionTemplate?: PostgresConfiguration['connection_template'];
62+
connectionSet?: PostgresConfiguration['connection_set'];
5863
}): DatabaseConnection => {
5964
const payload = {
6065
driver,
@@ -68,6 +73,8 @@ export const generatePostgresRequestPayload = ({
6873
generateConnectionInfo(readReplica)
6974
),
7075
extensions_schema: values.configuration.extensionSchema,
76+
connection_template: connectionTemplate,
77+
connection_set: connectionSet,
7178
},
7279
customization: generateGraphQLCustomizationInfo(
7380
values.customization ?? {}

0 commit comments

Comments
 (0)