Skip to content

Commit 4025bb4

Browse files
vijayprasanna13m4ttheweric
authored andcommitted
console: expose max_connections field on UI while connecting postgres databases
PR-URL: hasura/graphql-engine-mono#10520 Co-authored-by: Matthew Goodwin <[email protected]> GitOrigin-RevId: 7da0870e67e2d74c5182e38c4e1ad7c9e48b3e42
1 parent d9aec54 commit 4025bb4

File tree

8 files changed

+34
-10
lines changed

8 files changed

+34
-10
lines changed

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

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -108,7 +108,7 @@ export const Test: StoryObj<typeof ConnectPostgresWidget> = {
108108
// Find and click on advanced settings
109109
await userEvent.click(await canvas.findByText('Advanced Settings'));
110110
await expect(
111-
await canvas.findByText('Total Max Connections')
111+
await canvas.findByText('Max Connections')
112112
).toBeInTheDocument();
113113
await expect(await canvas.findByText('Idle Timeout')).toBeInTheDocument();
114114
await expect(await canvas.findByText('Retries')).toBeInTheDocument();
@@ -174,7 +174,7 @@ export const PostgresEditConnection: StoryObj<typeof ConnectPostgresWidget> = {
174174
await userEvent.click(await canvas.findByText('Advanced Settings'));
175175
await expect(
176176
await canvas.findByTestId(
177-
'configuration.connectionInfo.poolSettings.totalMaxConnections'
177+
'configuration.connectionInfo.poolSettings.maxConnections'
178178
)
179179
).toHaveValue(500);
180180
await expect(

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

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -8,10 +8,14 @@ import { ReactQueryDecorator } from '../../../../../storybook/decorators/react-q
88
import { useState } from 'react';
99
import { userEvent, waitFor, within } from '@storybook/testing-library';
1010
import { expect } from '@storybook/jest';
11+
import { ConsoleTypeDecorator } from '../../../../../storybook/decorators';
1112

1213
export default {
1314
component: ConnectPostgresForm,
14-
decorators: [ReactQueryDecorator()],
15+
decorators: [
16+
ReactQueryDecorator(),
17+
ConsoleTypeDecorator({ consoleType: 'cloud' }),
18+
],
1519
} as Meta<typeof ConnectPostgresForm>;
1620

1721
export const TestPostgresForm: StoryObj<typeof ConnectPostgresForm> = {
@@ -166,7 +170,7 @@ export const TestPostgresForm: StoryObj<typeof ConnectPostgresForm> = {
166170
);
167171

168172
await userEvent.click(await canvas.findByText('Advanced Settings'));
169-
await userEvent.type(await canvas.findByPlaceholderText('1000'), '100');
173+
await userEvent.type(await canvas.findByPlaceholderText('50'), '100');
170174
await userEvent.type(await canvas.findByPlaceholderText('180'), '100');
171175
await userEvent.type(await canvas.findByPlaceholderText('1'), '100');
172176
await userEvent.type(await canvas.findByPlaceholderText('360'), '100');
@@ -194,7 +198,7 @@ export const TestPostgresForm: StoryObj<typeof ConnectPostgresForm> = {
194198
port: 5432,
195199
},
196200
poolSettings: {
197-
totalMaxConnections: 100,
201+
maxConnections: 100,
198202
idleTimeout: 100,
199203
retries: 100,
200204
poolTimeout: 100,
@@ -252,7 +256,7 @@ export const TestPostgresForm: StoryObj<typeof ConnectPostgresForm> = {
252256
port: 5432,
253257
},
254258
poolSettings: {
255-
totalMaxConnections: 100,
259+
maxConnections: 100,
256260
idleTimeout: 100,
257261
retries: 100,
258262
poolTimeout: 100,

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

Lines changed: 18 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,7 @@
1+
import { isCloudConsole } from '../../../../../utils';
2+
import globals from '../../../../../Globals';
13
import { InputField } from '../../../../../new-components/Form';
4+
// import { isCloudConsole } from '../../../../../utils';
25

36
const commonFieldProps: Partial<React.InputHTMLAttributes<HTMLInputElement>> = {
47
onWheelCapture: e => e.currentTarget.blur(),
@@ -7,12 +10,23 @@ const commonFieldProps: Partial<React.InputHTMLAttributes<HTMLInputElement>> = {
710
export const PoolSettings = ({ name }: { name: string }) => {
811
return (
912
<>
13+
{isCloudConsole(globals) && (
14+
<InputField
15+
type="number"
16+
name={`${name}.totalMaxConnections`}
17+
label="Total Max Connections"
18+
placeholder="1000"
19+
tooltip="Maximum number of total connections to be maintained across any number of Hasura Cloud instances (default: 1000). Takes precedence over max_connections in Cloud projects."
20+
fieldProps={commonFieldProps}
21+
/>
22+
)}
23+
1024
<InputField
1125
type="number"
12-
name={`${name}.totalMaxConnections`}
13-
label="Total Max Connections"
14-
placeholder="1000"
15-
tooltip="Maximum number of database connections"
26+
name={`${name}.maxConnections`}
27+
label="Max Connections"
28+
placeholder="50"
29+
tooltip="Maximum number of connections to be kept in the pool (default: 50)"
1630
fieldProps={commonFieldProps}
1731
/>
1832
<InputField

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

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@ const numberSchema = z.preprocess(
1111
export const poolSettingsSchema = z
1212
.object({
1313
totalMaxConnections: numberSchema.optional(),
14+
maxConnections: numberSchema.optional(),
1415
idleTimeout: numberSchema.optional(),
1516
retries: numberSchema.optional(),
1617
poolTimeout: numberSchema.optional(),

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

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,7 @@ describe('adaptPostgresConnection works for ', () => {
2727
"poolSettings": {
2828
"connectionLifetime": undefined,
2929
"idleTimeout": undefined,
30+
"maxConnections": undefined,
3031
"poolTimeout": undefined,
3132
"retries": undefined,
3233
"totalMaxConnections": undefined,
@@ -98,6 +99,7 @@ describe('adaptPostgresConnection works for ', () => {
9899
"poolSettings": {
99100
"connectionLifetime": undefined,
100101
"idleTimeout": undefined,
102+
"maxConnections": undefined,
101103
"poolTimeout": undefined,
102104
"retries": undefined,
103105
"totalMaxConnections": undefined,

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

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -43,6 +43,7 @@ export const adaptPostgresConnectionInfo = (
4343
databaseUrl: adaptDatabaseUrl(connectionInfo.database_url),
4444
poolSettings: {
4545
totalMaxConnections: connectionInfo.pool_settings?.total_max_connections,
46+
maxConnections: connectionInfo.pool_settings?.max_connections,
4647
idleTimeout: connectionInfo.pool_settings?.idle_timeout,
4748
retries: connectionInfo.pool_settings?.retries,
4849
poolTimeout: connectionInfo.pool_settings?.pool_timeout,

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

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@ export const generateConnectionInfo = (
2424
},
2525
pool_settings: {
2626
total_max_connections: values.poolSettings?.totalMaxConnections,
27+
max_connections: values.poolSettings?.maxConnections,
2728
idle_timeout: values.poolSettings?.idleTimeout,
2829
retries: values.poolSettings?.retries,
2930
pool_timeout: values.poolSettings?.poolTimeout,

frontend/libs/console/legacy-ce/src/lib/features/ConnectDBRedesign/mocks/data.mock.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,7 @@ export const mockMetadata: Metadata = {
3535
pool_timeout: 300,
3636
retries: 400,
3737
total_max_connections: 500,
38+
max_connections: 500,
3839
},
3940
use_prepared_statements: true,
4041
},

0 commit comments

Comments
 (0)