Skip to content

Commit 292bf07

Browse files
author
Zabilsya
committed
[DOP-22196] add clickhouse, mssql, mysql connection types
1 parent b6631ad commit 292bf07

File tree

25 files changed

+302
-2
lines changed

25 files changed

+302
-2
lines changed

src/entities/connection/api/types.ts

Lines changed: 51 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,15 @@ export type Connection = {
77
description: string;
88
} & ConnectionData;
99

10-
export type ConnectionData = ConnectionHive | ConnectionHdfs | ConnectionOracle | ConnectionPostgres | ConnectionS3;
10+
export type ConnectionData =
11+
| ConnectionHive
12+
| ConnectionHdfs
13+
| ConnectionOracle
14+
| ConnectionPostgres
15+
| ConnectionClickhouse
16+
| ConnectionMySql
17+
| ConnectionMsSql
18+
| ConnectionS3;
1119

1220
export type ConnectionBucketStyle = 'domain' | 'path';
1321

@@ -66,6 +74,48 @@ export interface ConnectionPostgres {
6674
};
6775
}
6876

77+
export interface ConnectionClickhouse {
78+
auth_data: {
79+
type: ConnectionType.CLICKHOUSE;
80+
user: string;
81+
password?: string;
82+
};
83+
connection_data: {
84+
type: ConnectionType.CLICKHOUSE;
85+
host: string;
86+
port: number;
87+
database_name: string;
88+
};
89+
}
90+
91+
export interface ConnectionMySql {
92+
auth_data: {
93+
type: ConnectionType.MY_SQL;
94+
user: string;
95+
password?: string;
96+
};
97+
connection_data: {
98+
type: ConnectionType.MY_SQL;
99+
host: string;
100+
port: number;
101+
database_name: string;
102+
};
103+
}
104+
105+
export interface ConnectionMsSql {
106+
auth_data: {
107+
type: ConnectionType.MS_SQL;
108+
user: string;
109+
password?: string;
110+
};
111+
connection_data: {
112+
type: ConnectionType.MS_SQL;
113+
host: string;
114+
port: number;
115+
database_name: string;
116+
};
117+
}
118+
69119
export interface ConnectionS3 {
70120
auth_data: {
71121
type: ConnectionType.S3;
Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
import React from 'react';
2+
import { Form, Input, InputNumber } from 'antd';
3+
4+
import { useSensitiveFields } from '../../hooks';
5+
import { MAX_ALLOWED_PORT, MIN_ALLOWED_PORT } from '../../constants';
6+
7+
export const ConnectionClickhouse = () => {
8+
const { isRequired } = useSensitiveFields();
9+
10+
return (
11+
<>
12+
<Form.Item label="Database name" name="database_name" rules={[{ required: true }]}>
13+
<Input size="large" />
14+
</Form.Item>
15+
<Form.Item label="Host" name="host" rules={[{ required: true }]}>
16+
<Input size="large" />
17+
</Form.Item>
18+
<Form.Item label="Port" name="port" rules={[{ required: true }]}>
19+
<InputNumber size="large" min={MIN_ALLOWED_PORT} max={MAX_ALLOWED_PORT} />
20+
</Form.Item>
21+
<Form.Item label="User" name="user" rules={[{ required: true }]}>
22+
<Input size="large" />
23+
</Form.Item>
24+
<Form.Item label="Password" name="password" rules={[{ required: isRequired }]}>
25+
<Input.Password size="large" />
26+
</Form.Item>
27+
</>
28+
);
29+
};
Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
import React from 'react';
2+
import { Form, Input, InputNumber } from 'antd';
3+
4+
import { useSensitiveFields } from '../../hooks';
5+
import { MAX_ALLOWED_PORT, MIN_ALLOWED_PORT } from '../../constants';
6+
7+
export const ConnectionMsSql = () => {
8+
const { isRequired } = useSensitiveFields();
9+
10+
return (
11+
<>
12+
<Form.Item label="Database name" name="database_name" rules={[{ required: true }]}>
13+
<Input size="large" />
14+
</Form.Item>
15+
<Form.Item label="Host" name="host" rules={[{ required: true }]}>
16+
<Input size="large" />
17+
</Form.Item>
18+
<Form.Item label="Port" name="port" rules={[{ required: true }]}>
19+
<InputNumber size="large" min={MIN_ALLOWED_PORT} max={MAX_ALLOWED_PORT} />
20+
</Form.Item>
21+
<Form.Item label="User" name="user" rules={[{ required: true }]}>
22+
<Input size="large" />
23+
</Form.Item>
24+
<Form.Item label="Password" name="password" rules={[{ required: isRequired }]}>
25+
<Input.Password size="large" />
26+
</Form.Item>
27+
</>
28+
);
29+
};
Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
import React from 'react';
2+
import { Form, Input, InputNumber } from 'antd';
3+
4+
import { useSensitiveFields } from '../../hooks';
5+
import { MAX_ALLOWED_PORT, MIN_ALLOWED_PORT } from '../../constants';
6+
7+
export const ConnectionMySql = () => {
8+
const { isRequired } = useSensitiveFields();
9+
10+
return (
11+
<>
12+
<Form.Item label="Database name" name="database_name" rules={[{ required: true }]}>
13+
<Input size="large" />
14+
</Form.Item>
15+
<Form.Item label="Host" name="host" rules={[{ required: true }]}>
16+
<Input size="large" />
17+
</Form.Item>
18+
<Form.Item label="Port" name="port" rules={[{ required: true }]}>
19+
<InputNumber size="large" min={MIN_ALLOWED_PORT} max={MAX_ALLOWED_PORT} />
20+
</Form.Item>
21+
<Form.Item label="User" name="user" rules={[{ required: true }]}>
22+
<Input size="large" />
23+
</Form.Item>
24+
<Form.Item label="Password" name="password" rules={[{ required: isRequired }]}>
25+
<Input.Password size="large" />
26+
</Form.Item>
27+
</>
28+
);
29+
};

src/entities/connection/ui/ConnectionTypeForm/components/index.ts

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,3 +3,6 @@ export * from './ConnectionHive';
33
export * from './ConnectionOracle';
44
export * from './ConnectionPostgres';
55
export * from './ConnectionS3';
6+
export * from './ConnectionClickhouse';
7+
export * from './ConnectionMySql';
8+
export * from './ConnectionMsSql';

src/entities/connection/ui/ConnectionTypeForm/constants.tsx

Lines changed: 13 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,16 @@ import { createContext } from 'react';
33
import { ConnectionType } from '@shared/types';
44

55
import { SensitiveFieldsContextProps } from './types';
6-
import { ConnectionHdfs, ConnectionHive, ConnectionOracle, ConnectionPostgres, ConnectionS3 } from './components';
6+
import {
7+
ConnectionClickhouse,
8+
ConnectionHdfs,
9+
ConnectionHive,
10+
ConnectionMsSql,
11+
ConnectionMySql,
12+
ConnectionOracle,
13+
ConnectionPostgres,
14+
ConnectionS3,
15+
} from './components';
716

817
const SENSITIVE_FIELDS_CONTEXT_INITIAL_VALUE: SensitiveFieldsContextProps = {
918
isRequired: true,
@@ -21,5 +30,8 @@ export const CONNECTION_TYPE_COMPONENT = {
2130
[ConnectionType.HIVE]: <ConnectionHive />,
2231
[ConnectionType.ORACLE]: <ConnectionOracle />,
2332
[ConnectionType.POSTGRES]: <ConnectionPostgres />,
33+
[ConnectionType.CLICKHOUSE]: <ConnectionClickhouse />,
34+
[ConnectionType.MY_SQL]: <ConnectionMySql />,
35+
[ConnectionType.MS_SQL]: <ConnectionMsSql />,
2436
[ConnectionType.S3]: <ConnectionS3 />,
2537
};
Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
import { ConnectionClickhouse } from '../../api';
2+
3+
import { AdaptConnectionClickhouseProps } from './types';
4+
5+
/* Util for creating a ConnectionData object for "Clickhouse" connection by its fields */
6+
export const adaptConnectionClickhouse = (data: AdaptConnectionClickhouseProps): ConnectionClickhouse => {
7+
return {
8+
auth_data: {
9+
type: data.type,
10+
user: data.user,
11+
password: data.password,
12+
},
13+
connection_data: {
14+
type: data.type,
15+
database_name: data.database_name,
16+
host: data.host,
17+
port: data.port,
18+
},
19+
};
20+
};
Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
import { ConnectionClickhouse } from '../../api';
2+
3+
export type AdaptConnectionClickhouseProps = ConnectionClickhouse['auth_data'] &
4+
ConnectionClickhouse['connection_data'];
Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
import { ConnectionMsSql } from '../../api';
2+
3+
import { AdaptConnectionMsSqlProps } from './types';
4+
5+
/* Util for creating a ConnectionData object for "MsSQL" connection by its fields */
6+
export const adaptConnectionMsSql = (data: AdaptConnectionMsSqlProps): ConnectionMsSql => {
7+
return {
8+
auth_data: {
9+
type: data.type,
10+
user: data.user,
11+
password: data.password,
12+
},
13+
connection_data: {
14+
type: data.type,
15+
database_name: data.database_name,
16+
host: data.host,
17+
port: data.port,
18+
},
19+
};
20+
};
Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
import { ConnectionMsSql } from '../../api';
2+
3+
export type AdaptConnectionMsSqlProps = ConnectionMsSql['auth_data'] & ConnectionMsSql['connection_data'];

0 commit comments

Comments
 (0)