diff --git a/src/entities/connection/api/types.ts b/src/entities/connection/api/types.ts
index d6943f39..03095169 100644
--- a/src/entities/connection/api/types.ts
+++ b/src/entities/connection/api/types.ts
@@ -21,38 +21,43 @@ export type ConnectionBucketStyle = 'domain' | 'path';
export type ConnectionProtocol = 'https' | 'http';
+export enum ConnectionAuthType {
+ BASIC = 'basic',
+ S3 = 's3',
+}
+
+interface ConnectionAuthBasic {
+ type: ConnectionAuthType.BASIC;
+ user: string;
+ password?: string;
+}
+
+interface ConnectionAuthS3 {
+ type: ConnectionAuthType.S3;
+ access_key: string;
+ secret_key?: string;
+}
+
export interface ConnectionHive {
- auth_data: {
- type: ConnectionType.HIVE;
- user: string;
- password?: string;
- };
+ type: ConnectionType.HIVE;
+ auth_data: ConnectionAuthBasic;
connection_data: {
- type: ConnectionType.HIVE;
cluster: string;
};
}
export interface ConnectionHdfs {
- auth_data: {
- type: ConnectionType.HDFS;
- user: string;
- password?: string;
- };
+ type: ConnectionType.HDFS;
+ auth_data: ConnectionAuthBasic;
connection_data: {
- type: ConnectionType.HDFS;
cluster: string;
};
}
export interface ConnectionOracle {
- auth_data: {
- type: ConnectionType.ORACLE;
- user: string;
- password?: string;
- };
+ type: ConnectionType.ORACLE;
+ auth_data: ConnectionAuthBasic;
connection_data: {
- type: ConnectionType.ORACLE;
host: string;
port: number;
service_name: string | null;
@@ -61,13 +66,9 @@ export interface ConnectionOracle {
}
export interface ConnectionPostgres {
- auth_data: {
- type: ConnectionType.POSTGRES;
- user: string;
- password?: string;
- };
+ type: ConnectionType.POSTGRES;
+ auth_data: ConnectionAuthBasic;
connection_data: {
- type: ConnectionType.POSTGRES;
host: string;
port: number;
database_name: string;
@@ -75,13 +76,9 @@ export interface ConnectionPostgres {
}
export interface ConnectionClickhouse {
- auth_data: {
- type: ConnectionType.CLICKHOUSE;
- user: string;
- password?: string;
- };
+ type: ConnectionType.CLICKHOUSE;
+ auth_data: ConnectionAuthBasic;
connection_data: {
- type: ConnectionType.CLICKHOUSE;
host: string;
port: number;
database_name: string;
@@ -89,13 +86,9 @@ export interface ConnectionClickhouse {
}
export interface ConnectionMySql {
- auth_data: {
- type: ConnectionType.MY_SQL;
- user: string;
- password?: string;
- };
+ type: ConnectionType.MY_SQL;
+ auth_data: ConnectionAuthBasic;
connection_data: {
- type: ConnectionType.MY_SQL;
host: string;
port: number;
database_name: string;
@@ -103,13 +96,9 @@ export interface ConnectionMySql {
}
export interface ConnectionMsSql {
- auth_data: {
- type: ConnectionType.MS_SQL;
- user: string;
- password?: string;
- };
+ type: ConnectionType.MS_SQL;
+ auth_data: ConnectionAuthBasic;
connection_data: {
- type: ConnectionType.MS_SQL;
host: string;
port: number;
database_name: string;
@@ -117,13 +106,9 @@ export interface ConnectionMsSql {
}
export interface ConnectionS3 {
- auth_data: {
- type: ConnectionType.S3;
- access_key: string;
- secret_key?: string;
- };
+ type: ConnectionType.S3;
+ auth_data: ConnectionAuthS3;
connection_data: {
- type: ConnectionType.S3;
host: string;
bucket: string;
bucket_style: ConnectionBucketStyle;
diff --git a/src/entities/connection/index.ts b/src/entities/connection/index.ts
index 6b9a58e4..93c999ea 100644
--- a/src/entities/connection/index.ts
+++ b/src/entities/connection/index.ts
@@ -1,4 +1,3 @@
export * from './api';
export * from './constants';
export * from './ui';
-export * from './utils';
diff --git a/src/entities/connection/ui/ConnectionTypeForm/components/ConnectionAuthBasic/index.tsx b/src/entities/connection/ui/ConnectionTypeForm/components/ConnectionAuthBasic/index.tsx
new file mode 100644
index 00000000..d9960b5e
--- /dev/null
+++ b/src/entities/connection/ui/ConnectionTypeForm/components/ConnectionAuthBasic/index.tsx
@@ -0,0 +1,20 @@
+import React from 'react';
+import { Form, Input } from 'antd';
+
+import { useSensitiveFields } from '../../hooks';
+
+export const ConnectionAuthBasic = () => {
+ const { isRequired } = useSensitiveFields();
+
+ return (
+ <>
+
+
+
+
+
+
+
+ >
+ );
+};
diff --git a/src/entities/connection/ui/ConnectionTypeForm/components/ConnectionAuthS3/index.tsx b/src/entities/connection/ui/ConnectionTypeForm/components/ConnectionAuthS3/index.tsx
new file mode 100644
index 00000000..5fd5d07b
--- /dev/null
+++ b/src/entities/connection/ui/ConnectionTypeForm/components/ConnectionAuthS3/index.tsx
@@ -0,0 +1,20 @@
+import React from 'react';
+import { Form, Input } from 'antd';
+
+import { useSensitiveFields } from '../../hooks';
+
+export const ConnectionAuthS3 = () => {
+ const { isRequired } = useSensitiveFields();
+
+ return (
+ <>
+
+
+
+
+
+
+
+ >
+ );
+};
diff --git a/src/entities/connection/ui/ConnectionTypeForm/components/ConnectionClickhouse/index.tsx b/src/entities/connection/ui/ConnectionTypeForm/components/ConnectionClickhouse/index.tsx
index a76c3678..a163089a 100644
--- a/src/entities/connection/ui/ConnectionTypeForm/components/ConnectionClickhouse/index.tsx
+++ b/src/entities/connection/ui/ConnectionTypeForm/components/ConnectionClickhouse/index.tsx
@@ -1,29 +1,22 @@
import React from 'react';
import { Form, Input, InputNumber } from 'antd';
-import { useSensitiveFields } from '../../hooks';
import { MAX_ALLOWED_PORT, MIN_ALLOWED_PORT } from '../../constants';
+import { ConnectionAuthBasic } from '../ConnectionAuthBasic';
export const ConnectionClickhouse = () => {
- const { isRequired } = useSensitiveFields();
-
return (
<>
-
+
-
+
-
+
-
-
-
-
-
-
+
>
);
};
diff --git a/src/entities/connection/ui/ConnectionTypeForm/components/ConnectionHdfs/index.tsx b/src/entities/connection/ui/ConnectionTypeForm/components/ConnectionHdfs/index.tsx
index 1aebf2e3..9637824a 100644
--- a/src/entities/connection/ui/ConnectionTypeForm/components/ConnectionHdfs/index.tsx
+++ b/src/entities/connection/ui/ConnectionTypeForm/components/ConnectionHdfs/index.tsx
@@ -1,22 +1,15 @@
import React from 'react';
import { Form, Input } from 'antd';
-import { useSensitiveFields } from '../../hooks';
+import { ConnectionAuthBasic } from '../ConnectionAuthBasic';
export const ConnectionHdfs = () => {
- const { isRequired } = useSensitiveFields();
-
return (
<>
-
-
-
-
+
-
-
-
+
>
);
};
diff --git a/src/entities/connection/ui/ConnectionTypeForm/components/ConnectionHive/index.tsx b/src/entities/connection/ui/ConnectionTypeForm/components/ConnectionHive/index.tsx
index 4d7c5726..32da160d 100644
--- a/src/entities/connection/ui/ConnectionTypeForm/components/ConnectionHive/index.tsx
+++ b/src/entities/connection/ui/ConnectionTypeForm/components/ConnectionHive/index.tsx
@@ -1,22 +1,15 @@
import React from 'react';
import { Form, Input } from 'antd';
-import { useSensitiveFields } from '../../hooks';
+import { ConnectionAuthBasic } from '../ConnectionAuthBasic';
export const ConnectionHive = () => {
- const { isRequired } = useSensitiveFields();
-
return (
<>
-
-
-
-
+
-
-
-
+
>
);
};
diff --git a/src/entities/connection/ui/ConnectionTypeForm/components/ConnectionMsSql/index.tsx b/src/entities/connection/ui/ConnectionTypeForm/components/ConnectionMsSql/index.tsx
index 0eada6e4..eeee8fa1 100644
--- a/src/entities/connection/ui/ConnectionTypeForm/components/ConnectionMsSql/index.tsx
+++ b/src/entities/connection/ui/ConnectionTypeForm/components/ConnectionMsSql/index.tsx
@@ -1,29 +1,22 @@
import React from 'react';
import { Form, Input, InputNumber } from 'antd';
-import { useSensitiveFields } from '../../hooks';
import { MAX_ALLOWED_PORT, MIN_ALLOWED_PORT } from '../../constants';
+import { ConnectionAuthBasic } from '../ConnectionAuthBasic';
export const ConnectionMsSql = () => {
- const { isRequired } = useSensitiveFields();
-
return (
<>
-
+
-
+
-
+
-
-
-
-
-
-
+
>
);
};
diff --git a/src/entities/connection/ui/ConnectionTypeForm/components/ConnectionMySql/index.tsx b/src/entities/connection/ui/ConnectionTypeForm/components/ConnectionMySql/index.tsx
index 9ced6db7..1aae7b97 100644
--- a/src/entities/connection/ui/ConnectionTypeForm/components/ConnectionMySql/index.tsx
+++ b/src/entities/connection/ui/ConnectionTypeForm/components/ConnectionMySql/index.tsx
@@ -1,29 +1,22 @@
import React from 'react';
import { Form, Input, InputNumber } from 'antd';
-import { useSensitiveFields } from '../../hooks';
import { MAX_ALLOWED_PORT, MIN_ALLOWED_PORT } from '../../constants';
+import { ConnectionAuthBasic } from '../ConnectionAuthBasic';
export const ConnectionMySql = () => {
- const { isRequired } = useSensitiveFields();
-
return (
<>
-
+
-
+
-
+
-
-
-
-
-
-
+
>
);
};
diff --git a/src/entities/connection/ui/ConnectionTypeForm/components/ConnectionOracle/index.tsx b/src/entities/connection/ui/ConnectionTypeForm/components/ConnectionOracle/index.tsx
index 68d31f53..70eacf50 100644
--- a/src/entities/connection/ui/ConnectionTypeForm/components/ConnectionOracle/index.tsx
+++ b/src/entities/connection/ui/ConnectionTypeForm/components/ConnectionOracle/index.tsx
@@ -1,11 +1,10 @@
import React, { useCallback, useEffect, useState } from 'react';
import { Form, Input, InputNumber } from 'antd';
-import { useSensitiveFields } from '../../hooks';
import { MAX_ALLOWED_PORT, MIN_ALLOWED_PORT } from '../../constants';
+import { ConnectionAuthBasic } from '../ConnectionAuthBasic';
export const ConnectionOracle = () => {
- const { isRequired } = useSensitiveFields();
const form = Form.useFormInstance();
const [isServiceNameDisabled, setServiceNameDisabled] = useState(false);
@@ -30,15 +29,15 @@ export const ConnectionOracle = () => {
return (
<>
-
+
-
+
{
{
>
-
-
-
-
-
-
+
>
);
};
diff --git a/src/entities/connection/ui/ConnectionTypeForm/components/ConnectionPostgres/index.tsx b/src/entities/connection/ui/ConnectionTypeForm/components/ConnectionPostgres/index.tsx
index 3405f75f..4daf0e72 100644
--- a/src/entities/connection/ui/ConnectionTypeForm/components/ConnectionPostgres/index.tsx
+++ b/src/entities/connection/ui/ConnectionTypeForm/components/ConnectionPostgres/index.tsx
@@ -1,29 +1,22 @@
import React from 'react';
import { Form, Input, InputNumber } from 'antd';
-import { useSensitiveFields } from '../../hooks';
import { MAX_ALLOWED_PORT, MIN_ALLOWED_PORT } from '../../constants';
+import { ConnectionAuthBasic } from '../ConnectionAuthBasic';
export const ConnectionPostgres = () => {
- const { isRequired } = useSensitiveFields();
-
return (
<>
-
+
-
+
-
+
-
-
-
-
-
-
+
>
);
};
diff --git a/src/entities/connection/ui/ConnectionTypeForm/components/ConnectionS3/index.tsx b/src/entities/connection/ui/ConnectionTypeForm/components/ConnectionS3/index.tsx
index 35b454d0..4346367a 100644
--- a/src/entities/connection/ui/ConnectionTypeForm/components/ConnectionS3/index.tsx
+++ b/src/entities/connection/ui/ConnectionTypeForm/components/ConnectionS3/index.tsx
@@ -2,42 +2,35 @@ import React from 'react';
import { Form, Input, InputNumber, Select } from 'antd';
import { CONNECTION_BUCKET_STYLE_SELECT_OPTIONS, CONNECTION_PROTOCOL_SELECT_OPTIONS } from '@entities/connection';
-import { useSensitiveFields } from '../../hooks';
import { MAX_ALLOWED_PORT, MIN_ALLOWED_PORT } from '../../constants';
+import { ConnectionAuthS3 } from '../ConnectionAuthS3';
export const ConnectionS3 = () => {
- const { isRequired } = useSensitiveFields();
-
return (
<>
-
+
-
+
-
+
-
+
-
+
-
-
-
-
+
-
-
-
+
>
);
};
diff --git a/src/entities/connection/ui/ConnectionTypeForm/hooks/index.ts b/src/entities/connection/ui/ConnectionTypeForm/hooks/index.ts
index 93d5003c..659ad64f 100644
--- a/src/entities/connection/ui/ConnectionTypeForm/hooks/index.ts
+++ b/src/entities/connection/ui/ConnectionTypeForm/hooks/index.ts
@@ -1 +1,2 @@
export * from './useIsRequiredSensitiveFields';
+export * from './useSelectConnectionType';
diff --git a/src/entities/connection/ui/ConnectionTypeForm/hooks/useSelectConnectionType/index.ts b/src/entities/connection/ui/ConnectionTypeForm/hooks/useSelectConnectionType/index.ts
new file mode 100644
index 00000000..93c9c5f1
--- /dev/null
+++ b/src/entities/connection/ui/ConnectionTypeForm/hooks/useSelectConnectionType/index.ts
@@ -0,0 +1,34 @@
+import { ConnectionType } from '@shared/types';
+import { Form } from 'antd';
+import { useState } from 'react';
+import { ConnectionAuthType } from '@entities/connection';
+
+import { UseSelectConnectionTypeProps } from './types';
+
+/** Hook for handling connection type state in connection form */
+export const useSelectConnectionType = ({ initialType }: UseSelectConnectionTypeProps) => {
+ const formInstance = Form.useFormInstance();
+ const [selectedConnectionType, setConnectionType] = useState(initialType);
+
+ const getAuthDataTypeValue = (type: ConnectionType) => {
+ switch (type) {
+ case ConnectionType.CLICKHOUSE:
+ case ConnectionType.HDFS:
+ case ConnectionType.HIVE:
+ case ConnectionType.MS_SQL:
+ case ConnectionType.MY_SQL:
+ case ConnectionType.ORACLE:
+ case ConnectionType.POSTGRES:
+ return ConnectionAuthType.BASIC;
+ case ConnectionType.S3:
+ return ConnectionAuthType.S3;
+ }
+ };
+
+ const handleSelectConnectionType = (type: ConnectionType) => {
+ setConnectionType(type);
+ formInstance.setFieldValue(['auth_data', 'type'], getAuthDataTypeValue(type));
+ };
+
+ return { selectedConnectionType, handleSelectConnectionType };
+};
diff --git a/src/entities/connection/ui/ConnectionTypeForm/hooks/useSelectConnectionType/types.ts b/src/entities/connection/ui/ConnectionTypeForm/hooks/useSelectConnectionType/types.ts
new file mode 100644
index 00000000..dd36ca99
--- /dev/null
+++ b/src/entities/connection/ui/ConnectionTypeForm/hooks/useSelectConnectionType/types.ts
@@ -0,0 +1,5 @@
+import { ConnectionType } from '@shared/types';
+
+export interface UseSelectConnectionTypeProps {
+ initialType?: ConnectionType;
+}
diff --git a/src/entities/connection/ui/ConnectionTypeForm/index.tsx b/src/entities/connection/ui/ConnectionTypeForm/index.tsx
index 6309b1ff..88123533 100644
--- a/src/entities/connection/ui/ConnectionTypeForm/index.tsx
+++ b/src/entities/connection/ui/ConnectionTypeForm/index.tsx
@@ -1,17 +1,13 @@
-import React, { useState } from 'react';
-import { ConnectionType } from '@shared/types';
+import React from 'react';
import { Form, Select } from 'antd';
import { CONNECTION_TYPE_SELECT_OPTIONS } from '@entities/connection';
import { ConnectionTypeFormProps } from './types';
import { CONNECTION_TYPE_COMPONENT, SensitiveFieldsContext } from './constants';
+import { useSelectConnectionType } from './hooks';
export const ConnectionTypeForm = ({ initialType, isRequiredSensitiveFields = true }: ConnectionTypeFormProps) => {
- const [selectedConnectionType, setConnectionType] = useState(initialType);
-
- const handleSelectConnectionType = (type: ConnectionType) => {
- setConnectionType(type);
- };
+ const { selectedConnectionType, handleSelectConnectionType } = useSelectConnectionType({ initialType });
return (
<>
diff --git a/src/entities/connection/utils/adaptConnectionClickhouse/index.ts b/src/entities/connection/utils/adaptConnectionClickhouse/index.ts
deleted file mode 100644
index da85f9f3..00000000
--- a/src/entities/connection/utils/adaptConnectionClickhouse/index.ts
+++ /dev/null
@@ -1,20 +0,0 @@
-import { ConnectionClickhouse } from '../../api';
-
-import { AdaptConnectionClickhouseProps } from './types';
-
-/* Util for creating a ConnectionData object for "Clickhouse" connection by its fields */
-export const adaptConnectionClickhouse = (data: AdaptConnectionClickhouseProps): ConnectionClickhouse => {
- return {
- auth_data: {
- type: data.type,
- user: data.user,
- password: data.password,
- },
- connection_data: {
- type: data.type,
- database_name: data.database_name,
- host: data.host,
- port: data.port,
- },
- };
-};
diff --git a/src/entities/connection/utils/adaptConnectionClickhouse/types.ts b/src/entities/connection/utils/adaptConnectionClickhouse/types.ts
deleted file mode 100644
index 84bb1afb..00000000
--- a/src/entities/connection/utils/adaptConnectionClickhouse/types.ts
+++ /dev/null
@@ -1,4 +0,0 @@
-import { ConnectionClickhouse } from '../../api';
-
-export type AdaptConnectionClickhouseProps = ConnectionClickhouse['auth_data'] &
- ConnectionClickhouse['connection_data'];
diff --git a/src/entities/connection/utils/adaptConnectionHdfs/index.ts b/src/entities/connection/utils/adaptConnectionHdfs/index.ts
deleted file mode 100644
index 6b48cb6f..00000000
--- a/src/entities/connection/utils/adaptConnectionHdfs/index.ts
+++ /dev/null
@@ -1,18 +0,0 @@
-import { ConnectionHdfs } from '../../api';
-
-import { AdaptConnectionHdfsProps } from './types';
-
-/* Util for creating a ConnectionData object for "HDFS" connection by its fields */
-export const adaptConnectionHdfs = (data: AdaptConnectionHdfsProps): ConnectionHdfs => {
- return {
- auth_data: {
- type: data.type,
- user: data.user,
- password: data.password,
- },
- connection_data: {
- type: data.type,
- cluster: data.cluster,
- },
- };
-};
diff --git a/src/entities/connection/utils/adaptConnectionHdfs/types.ts b/src/entities/connection/utils/adaptConnectionHdfs/types.ts
deleted file mode 100644
index 22a19bba..00000000
--- a/src/entities/connection/utils/adaptConnectionHdfs/types.ts
+++ /dev/null
@@ -1,3 +0,0 @@
-import { ConnectionHdfs } from '../../api';
-
-export type AdaptConnectionHdfsProps = ConnectionHdfs['auth_data'] & ConnectionHdfs['connection_data'];
diff --git a/src/entities/connection/utils/adaptConnectionHive/index.ts b/src/entities/connection/utils/adaptConnectionHive/index.ts
deleted file mode 100644
index d86869d6..00000000
--- a/src/entities/connection/utils/adaptConnectionHive/index.ts
+++ /dev/null
@@ -1,18 +0,0 @@
-import { ConnectionHive } from '../../api';
-
-import { AdaptConnectionHiveProps } from './types';
-
-/* Util for creating a ConnectionData object for "Hive" connection by its fields */
-export const adaptConnectionHive = (data: AdaptConnectionHiveProps): ConnectionHive => {
- return {
- auth_data: {
- type: data.type,
- user: data.user,
- password: data.password,
- },
- connection_data: {
- type: data.type,
- cluster: data.cluster,
- },
- };
-};
diff --git a/src/entities/connection/utils/adaptConnectionHive/types.ts b/src/entities/connection/utils/adaptConnectionHive/types.ts
deleted file mode 100644
index da0483c8..00000000
--- a/src/entities/connection/utils/adaptConnectionHive/types.ts
+++ /dev/null
@@ -1,3 +0,0 @@
-import { ConnectionHive } from '../../api';
-
-export type AdaptConnectionHiveProps = ConnectionHive['auth_data'] & ConnectionHive['connection_data'];
diff --git a/src/entities/connection/utils/adaptConnectionMsSql/index.ts b/src/entities/connection/utils/adaptConnectionMsSql/index.ts
deleted file mode 100644
index 5d7fda21..00000000
--- a/src/entities/connection/utils/adaptConnectionMsSql/index.ts
+++ /dev/null
@@ -1,20 +0,0 @@
-import { ConnectionMsSql } from '../../api';
-
-import { AdaptConnectionMsSqlProps } from './types';
-
-/* Util for creating a ConnectionData object for "MsSQL" connection by its fields */
-export const adaptConnectionMsSql = (data: AdaptConnectionMsSqlProps): ConnectionMsSql => {
- return {
- auth_data: {
- type: data.type,
- user: data.user,
- password: data.password,
- },
- connection_data: {
- type: data.type,
- database_name: data.database_name,
- host: data.host,
- port: data.port,
- },
- };
-};
diff --git a/src/entities/connection/utils/adaptConnectionMsSql/types.ts b/src/entities/connection/utils/adaptConnectionMsSql/types.ts
deleted file mode 100644
index cf7ca0d8..00000000
--- a/src/entities/connection/utils/adaptConnectionMsSql/types.ts
+++ /dev/null
@@ -1,3 +0,0 @@
-import { ConnectionMsSql } from '../../api';
-
-export type AdaptConnectionMsSqlProps = ConnectionMsSql['auth_data'] & ConnectionMsSql['connection_data'];
diff --git a/src/entities/connection/utils/adaptConnectionMySql/index.ts b/src/entities/connection/utils/adaptConnectionMySql/index.ts
deleted file mode 100644
index 0d21bb86..00000000
--- a/src/entities/connection/utils/adaptConnectionMySql/index.ts
+++ /dev/null
@@ -1,20 +0,0 @@
-import { ConnectionMySql } from '../../api';
-
-import { AdaptConnectionMySqlProps } from './types';
-
-/* Util for creating a ConnectionData object for "MySQL" connection by its fields */
-export const adaptConnectionMySql = (data: AdaptConnectionMySqlProps): ConnectionMySql => {
- return {
- auth_data: {
- type: data.type,
- user: data.user,
- password: data.password,
- },
- connection_data: {
- type: data.type,
- database_name: data.database_name,
- host: data.host,
- port: data.port,
- },
- };
-};
diff --git a/src/entities/connection/utils/adaptConnectionMySql/types.ts b/src/entities/connection/utils/adaptConnectionMySql/types.ts
deleted file mode 100644
index a629f962..00000000
--- a/src/entities/connection/utils/adaptConnectionMySql/types.ts
+++ /dev/null
@@ -1,3 +0,0 @@
-import { ConnectionMySql } from '../../api';
-
-export type AdaptConnectionMySqlProps = ConnectionMySql['auth_data'] & ConnectionMySql['connection_data'];
diff --git a/src/entities/connection/utils/adaptConnectionOracle/index.ts b/src/entities/connection/utils/adaptConnectionOracle/index.ts
deleted file mode 100644
index 3b10f7cb..00000000
--- a/src/entities/connection/utils/adaptConnectionOracle/index.ts
+++ /dev/null
@@ -1,21 +0,0 @@
-import { ConnectionOracle } from '../../api';
-
-import { AdaptConnectionOracleProps } from './types';
-
-/* Util for creating a ConnectionData object for "Oracle" connection by its fields */
-export const adaptConnectionOracle = (data: AdaptConnectionOracleProps): ConnectionOracle => {
- return {
- auth_data: {
- type: data.type,
- user: data.user,
- password: data.password,
- },
- connection_data: {
- type: data.type,
- service_name: data.service_name,
- sid: data.sid,
- host: data.host,
- port: data.port,
- },
- };
-};
diff --git a/src/entities/connection/utils/adaptConnectionOracle/types.ts b/src/entities/connection/utils/adaptConnectionOracle/types.ts
deleted file mode 100644
index df8239e5..00000000
--- a/src/entities/connection/utils/adaptConnectionOracle/types.ts
+++ /dev/null
@@ -1,3 +0,0 @@
-import { ConnectionOracle } from '../../api';
-
-export type AdaptConnectionOracleProps = ConnectionOracle['auth_data'] & ConnectionOracle['connection_data'];
diff --git a/src/entities/connection/utils/adaptConnectionPostgres/index.ts b/src/entities/connection/utils/adaptConnectionPostgres/index.ts
deleted file mode 100644
index 268496ee..00000000
--- a/src/entities/connection/utils/adaptConnectionPostgres/index.ts
+++ /dev/null
@@ -1,20 +0,0 @@
-import { ConnectionPostgres } from '../../api';
-
-import { AdaptConnectionPostgresProps } from './types';
-
-/* Util for creating a ConnectionData object for "Postgres" connection by its fields */
-export const adaptConnectionPostgres = (data: AdaptConnectionPostgresProps): ConnectionPostgres => {
- return {
- auth_data: {
- type: data.type,
- user: data.user,
- password: data.password,
- },
- connection_data: {
- type: data.type,
- database_name: data.database_name,
- host: data.host,
- port: data.port,
- },
- };
-};
diff --git a/src/entities/connection/utils/adaptConnectionPostgres/types.ts b/src/entities/connection/utils/adaptConnectionPostgres/types.ts
deleted file mode 100644
index 9917ec6d..00000000
--- a/src/entities/connection/utils/adaptConnectionPostgres/types.ts
+++ /dev/null
@@ -1,3 +0,0 @@
-import { ConnectionPostgres } from '../../api';
-
-export type AdaptConnectionPostgresProps = ConnectionPostgres['auth_data'] & ConnectionPostgres['connection_data'];
diff --git a/src/entities/connection/utils/adaptConnectionS3/index.ts b/src/entities/connection/utils/adaptConnectionS3/index.ts
deleted file mode 100644
index 85a23f31..00000000
--- a/src/entities/connection/utils/adaptConnectionS3/index.ts
+++ /dev/null
@@ -1,23 +0,0 @@
-import { ConnectionS3 } from '../../api';
-
-import { AdaptConnectionS3Props } from './types';
-
-/* Util for creating a ConnectionData object for "S3" connection by its fields */
-export const adaptConnectionS3 = (data: AdaptConnectionS3Props): ConnectionS3 => {
- return {
- auth_data: {
- type: data.type,
- access_key: data.access_key,
- secret_key: data.secret_key,
- },
- connection_data: {
- type: data.type,
- bucket_style: data.bucket_style,
- bucket: data.bucket,
- host: data.host,
- protocol: data.protocol,
- port: data.port,
- region: data.region,
- },
- };
-};
diff --git a/src/entities/connection/utils/adaptConnectionS3/types.ts b/src/entities/connection/utils/adaptConnectionS3/types.ts
deleted file mode 100644
index 6ba5e3cc..00000000
--- a/src/entities/connection/utils/adaptConnectionS3/types.ts
+++ /dev/null
@@ -1,3 +0,0 @@
-import { ConnectionS3 } from '../../api';
-
-export type AdaptConnectionS3Props = ConnectionS3['auth_data'] & ConnectionS3['connection_data'];
diff --git a/src/entities/connection/utils/index.ts b/src/entities/connection/utils/index.ts
deleted file mode 100644
index 7b32b23d..00000000
--- a/src/entities/connection/utils/index.ts
+++ /dev/null
@@ -1,8 +0,0 @@
-export * from './adaptConnectionHdfs';
-export * from './adaptConnectionHive';
-export * from './adaptConnectionOracle';
-export * from './adaptConnectionPostgres';
-export * from './adaptConnectionS3';
-export * from './adaptConnectionClickhouse';
-export * from './adaptConnectionMySql';
-export * from './adaptConnectionMsSql';
diff --git a/src/features/connection/ConnectionDetailInfo/index.tsx b/src/features/connection/ConnectionDetailInfo/index.tsx
index 5251ed4f..e6640d32 100644
--- a/src/features/connection/ConnectionDetailInfo/index.tsx
+++ b/src/features/connection/ConnectionDetailInfo/index.tsx
@@ -22,14 +22,14 @@ export const ConnectionDetailInfo = ({ connection, group, ...props }: Connection
{group.name}
- {CONNECTION_TYPE_NAMES[connection.connection_data.type]}
+ {CONNECTION_TYPE_NAMES[connection.type]}
- {getConnectionAuthData({ data: connection.auth_data }).map((item, index) => (
+ {getConnectionAuthData(connection).map((item, index) => (
{item.content}
))}
- {getConnectionData({ data: connection.connection_data }).map((item, index) => (
+ {getConnectionData(connection).map((item, index) => (
{item.content}
diff --git a/src/features/connection/ConnectionDetailInfo/utils/getConnectionAuthData/index.ts b/src/features/connection/ConnectionDetailInfo/utils/getConnectionAuthData/index.ts
index d0d6c546..fcefe7a0 100644
--- a/src/features/connection/ConnectionDetailInfo/utils/getConnectionAuthData/index.ts
+++ b/src/features/connection/ConnectionDetailInfo/utils/getConnectionAuthData/index.ts
@@ -1,15 +1,16 @@
import { ConnectionType, DescriptionItem } from '@shared/types';
-
-import { GetDescriptionItemsProps } from './types';
+import { Connection } from '@entities/connection';
/** Util for mapping connection auth data for Description component depends on connection type */
-export const getConnectionAuthData = ({ data }: GetDescriptionItemsProps): DescriptionItem[] => {
- switch (data.type) {
+export const getConnectionAuthData = (connection: Connection): DescriptionItem[] => {
+ const { type, auth_data } = connection;
+
+ switch (type) {
case ConnectionType.S3:
return [
{
label: 'Access key',
- content: data.access_key,
+ content: auth_data.access_key,
},
];
case ConnectionType.HIVE:
@@ -22,7 +23,7 @@ export const getConnectionAuthData = ({ data }: GetDescriptionItemsProps): Descr
return [
{
label: 'User',
- content: data.user,
+ content: auth_data.user,
},
];
}
diff --git a/src/features/connection/ConnectionDetailInfo/utils/getConnectionAuthData/types.ts b/src/features/connection/ConnectionDetailInfo/utils/getConnectionAuthData/types.ts
deleted file mode 100644
index 7d2f1f03..00000000
--- a/src/features/connection/ConnectionDetailInfo/utils/getConnectionAuthData/types.ts
+++ /dev/null
@@ -1,5 +0,0 @@
-import { Connection } from '@entities/connection';
-
-export interface GetDescriptionItemsProps {
- data: Connection['auth_data'];
-}
diff --git a/src/features/connection/ConnectionDetailInfo/utils/getConnectionData/index.ts b/src/features/connection/ConnectionDetailInfo/utils/getConnectionData/index.ts
index d8ea15a8..413d7ea7 100644
--- a/src/features/connection/ConnectionDetailInfo/utils/getConnectionData/index.ts
+++ b/src/features/connection/ConnectionDetailInfo/utils/getConnectionData/index.ts
@@ -1,23 +1,24 @@
+import { Connection } from '@entities/connection';
import { ConnectionType, DescriptionItem } from '@shared/types';
-import { GetDescriptionItemsProps } from './types';
-
/** Util for mapping connection data for Description component depends on connection type */
-export const getConnectionData = ({ data }: GetDescriptionItemsProps): DescriptionItem[] => {
- switch (data.type) {
+export const getConnectionData = (connection: Connection): DescriptionItem[] => {
+ const { type, connection_data } = connection;
+
+ switch (type) {
case ConnectionType.ORACLE:
return [
{
- label: data.service_name ? 'Service name' : 'Sid',
- content: data.service_name || data.sid,
+ label: connection_data.service_name ? 'Service name' : 'Sid',
+ content: connection_data.service_name || connection_data.sid,
},
{
label: 'Host',
- content: data.host,
+ content: connection_data.host,
},
{
label: 'Port',
- content: data.port,
+ content: connection_data.port,
},
];
case ConnectionType.POSTGRES:
@@ -27,42 +28,42 @@ export const getConnectionData = ({ data }: GetDescriptionItemsProps): Descripti
return [
{
label: 'Database name',
- content: data.database_name,
+ content: connection_data.database_name,
},
{
label: 'Host',
- content: data.host,
+ content: connection_data.host,
},
{
label: 'Port',
- content: data.port,
+ content: connection_data.port,
},
];
case ConnectionType.S3:
return [
{
label: 'Host',
- content: data.host,
+ content: connection_data.host,
},
{
label: 'Bucket style',
- content: data.bucket_style,
+ content: connection_data.bucket_style,
},
{
label: 'Bucket',
- content: data.bucket,
+ content: connection_data.bucket,
},
{
label: 'Protocol',
- content: data.protocol,
+ content: connection_data.protocol,
},
{
label: 'Port',
- content: data.port || '',
+ content: connection_data.port || '',
},
{
label: 'Region',
- content: data.region || '',
+ content: connection_data.region || '',
},
];
case ConnectionType.HIVE:
@@ -70,7 +71,7 @@ export const getConnectionData = ({ data }: GetDescriptionItemsProps): Descripti
return [
{
label: 'Cluster',
- content: data.cluster,
+ content: connection_data.cluster,
},
];
}
diff --git a/src/features/connection/ConnectionDetailInfo/utils/getConnectionData/types.ts b/src/features/connection/ConnectionDetailInfo/utils/getConnectionData/types.ts
deleted file mode 100644
index 02ec5ef5..00000000
--- a/src/features/connection/ConnectionDetailInfo/utils/getConnectionData/types.ts
+++ /dev/null
@@ -1,5 +0,0 @@
-import { Connection } from '@entities/connection';
-
-export interface GetDescriptionItemsProps {
- data: Connection['connection_data'];
-}
diff --git a/src/features/connection/ConnectionList/constants.tsx b/src/features/connection/ConnectionList/constants.tsx
index abee7f59..0674850c 100644
--- a/src/features/connection/ConnectionList/constants.tsx
+++ b/src/features/connection/ConnectionList/constants.tsx
@@ -19,7 +19,7 @@ export const CONNECTION_LIST_COLUMNS: TableColumns CONNECTION_TYPE_NAMES[record.connection_data.type],
+ render: (data, record) => CONNECTION_TYPE_NAMES[record.type],
width: 150,
},
{
diff --git a/src/features/connection/CreateConnection/index.tsx b/src/features/connection/CreateConnection/index.tsx
index 3c235b67..330875a5 100644
--- a/src/features/connection/CreateConnection/index.tsx
+++ b/src/features/connection/CreateConnection/index.tsx
@@ -4,17 +4,13 @@ import { Form, Input } from 'antd';
import { useNavigate } from 'react-router-dom';
import { Connection, ConnectionQueryKey, connectionService, ConnectionTypeForm } from '@entities/connection';
-import { adaptConnectionTypeRequest } from '../utils';
-
import { CreateConnectionForm, CreateConnectionProps } from './types';
export const CreateConnection = ({ group }: CreateConnectionProps) => {
const navigate = useNavigate();
- const handleCreateConnection = ({ name, description, ...values }: CreateConnectionForm) => {
- return connectionService.createConnection(
- Object.assign({ group_id: group.id, name, description }, adaptConnectionTypeRequest(values)),
- );
+ const handleCreateConnection = (values: CreateConnectionForm) => {
+ return connectionService.createConnection(Object.assign({ group_id: group.id, ...values }));
};
const onSuccess = (response: Connection) => {
diff --git a/src/features/connection/CreateConnection/types.ts b/src/features/connection/CreateConnection/types.ts
index 86e3ccc1..2c61d3e5 100644
--- a/src/features/connection/CreateConnection/types.ts
+++ b/src/features/connection/CreateConnection/types.ts
@@ -1,9 +1,7 @@
import { CreateConnectionRequest } from '@entities/connection';
import { GroupData } from '@entities/group';
-export type CreateConnectionForm = Omit &
- CreateConnectionRequest['connection_data'] &
- CreateConnectionRequest['auth_data'];
+export type CreateConnectionForm = Omit;
export interface CreateConnectionProps {
group: GroupData;
diff --git a/src/features/connection/UpdateConnection/index.tsx b/src/features/connection/UpdateConnection/index.tsx
index c5300cb8..e6f444ba 100644
--- a/src/features/connection/UpdateConnection/index.tsx
+++ b/src/features/connection/UpdateConnection/index.tsx
@@ -4,18 +4,14 @@ import { Form, Input } from 'antd';
import { useNavigate } from 'react-router-dom';
import { Connection, ConnectionQueryKey, connectionService, ConnectionTypeForm } from '@entities/connection';
-import { adaptConnectionTypeRequest } from '../utils';
-
import { UpdateConnectionForm, UpdateConnectionProps } from './types';
-import { getUpdateConnectionInitialValues } from './utils';
export const UpdateConnection = ({ connection, group }: UpdateConnectionProps) => {
+ const { id: connectionId, group_id, ...connectionInitialValues } = connection;
const navigate = useNavigate();
- const handleUpdateConnection = ({ name, description, ...values }: UpdateConnectionForm) => {
- return connectionService.updateConnection(
- Object.assign({ id: connection.id, name, description }, adaptConnectionTypeRequest(values)),
- );
+ const handleUpdateConnection = (values: UpdateConnectionForm) => {
+ return connectionService.updateConnection(Object.assign({ id: connectionId, ...values }));
};
const onSuccess = (response: Connection) => {
@@ -29,12 +25,12 @@ export const UpdateConnection = ({ connection, group }: UpdateConnectionProps) =
return (
mutationFunction={handleUpdateConnection}
- initialValues={getUpdateConnectionInitialValues(connection)}
+ initialValues={connectionInitialValues}
onSuccess={onSuccess}
successMessage="Connection was updated successfully"
keysInvalidateQueries={[
[{ queryKey: [ConnectionQueryKey.GET_CONNECTIONS, group.id] }],
- [{ queryKey: [ConnectionQueryKey.GET_CONNECTION, connection.id] }],
+ [{ queryKey: [ConnectionQueryKey.GET_CONNECTION, connectionId] }],
]}
>
@@ -47,7 +43,7 @@ export const UpdateConnection = ({ connection, group }: UpdateConnectionProps) =
-
+
diff --git a/src/features/connection/UpdateConnection/types.ts b/src/features/connection/UpdateConnection/types.ts
index 775e0d0a..3c214296 100644
--- a/src/features/connection/UpdateConnection/types.ts
+++ b/src/features/connection/UpdateConnection/types.ts
@@ -1,9 +1,7 @@
-import { Connection, CreateConnectionRequest, UpdateConnectionRequest } from '@entities/connection';
+import { Connection, UpdateConnectionRequest } from '@entities/connection';
import { GroupData } from '@entities/group';
-export type UpdateConnectionForm = Omit &
- CreateConnectionRequest['connection_data'] &
- CreateConnectionRequest['auth_data'];
+export type UpdateConnectionForm = Omit;
export interface UpdateConnectionProps {
connection: Connection;
diff --git a/src/features/connection/UpdateConnection/utils/getUpdateConnectionInitialValues/index.ts b/src/features/connection/UpdateConnection/utils/getUpdateConnectionInitialValues/index.ts
deleted file mode 100644
index 5617e57a..00000000
--- a/src/features/connection/UpdateConnection/utils/getUpdateConnectionInitialValues/index.ts
+++ /dev/null
@@ -1,85 +0,0 @@
-import { Connection } from '@entities/connection';
-import { ConnectionType } from '@shared/types';
-
-import { UpdateConnectionForm } from '../../types';
-
-/* Util for preparing initial data for update connection form */
-export const getUpdateConnectionInitialValues = (connection: Connection): UpdateConnectionForm => {
- const baseFormData = {
- name: connection.name,
- description: connection.description,
- id: connection.id,
- };
- // TODO: [DOP-21832] Temporary solution until backend takes ConnectionType up a level in response.
- if (connection.auth_data.type === ConnectionType.HDFS && connection.connection_data.type === ConnectionType.HDFS) {
- return Object.assign(baseFormData, {
- ...connection.connection_data,
- ...connection.auth_data,
- });
- }
- if (connection.auth_data.type === ConnectionType.HIVE && connection.connection_data.type === ConnectionType.HIVE) {
- return Object.assign(baseFormData, {
- ...connection.connection_data,
- ...connection.auth_data,
- });
- }
- if (
- connection.auth_data.type === ConnectionType.ORACLE &&
- connection.connection_data.type === ConnectionType.ORACLE
- ) {
- return Object.assign(baseFormData, {
- ...connection.connection_data,
- ...connection.auth_data,
- });
- }
- if (
- connection.auth_data.type === ConnectionType.POSTGRES &&
- connection.connection_data.type === ConnectionType.POSTGRES
- ) {
- return Object.assign(baseFormData, {
- ...connection.connection_data,
- ...connection.auth_data,
- });
- }
- if (connection.auth_data.type === ConnectionType.S3 && connection.connection_data.type === ConnectionType.S3) {
- return Object.assign(baseFormData, {
- ...connection.connection_data,
- ...connection.auth_data,
- });
- }
- if (
- connection.auth_data.type === ConnectionType.MS_SQL &&
- connection.connection_data.type === ConnectionType.MS_SQL
- ) {
- return Object.assign(baseFormData, {
- ...connection.connection_data,
- ...connection.auth_data,
- });
- }
- if (
- connection.auth_data.type === ConnectionType.MY_SQL &&
- connection.connection_data.type === ConnectionType.MY_SQL
- ) {
- return Object.assign(baseFormData, {
- ...connection.connection_data,
- ...connection.auth_data,
- });
- }
- if (
- connection.auth_data.type === ConnectionType.CLICKHOUSE &&
- connection.connection_data.type === ConnectionType.CLICKHOUSE
- ) {
- return Object.assign(baseFormData, {
- ...connection.connection_data,
- ...connection.auth_data,
- });
- }
- return {
- name: connection.name,
- description: connection.description,
- type: ConnectionType.HDFS,
- cluster: '',
- user: '',
- password: '',
- };
-};
diff --git a/src/features/connection/UpdateConnection/utils/index.ts b/src/features/connection/UpdateConnection/utils/index.ts
deleted file mode 100644
index 9b2f85be..00000000
--- a/src/features/connection/UpdateConnection/utils/index.ts
+++ /dev/null
@@ -1 +0,0 @@
-export * from './getUpdateConnectionInitialValues';
diff --git a/src/features/connection/utils/adaptConnectionTypeRequest/index.ts b/src/features/connection/utils/adaptConnectionTypeRequest/index.ts
deleted file mode 100644
index 9fa408a8..00000000
--- a/src/features/connection/utils/adaptConnectionTypeRequest/index.ts
+++ /dev/null
@@ -1,36 +0,0 @@
-import { ConnectionType } from '@shared/types';
-import {
- adaptConnectionClickhouse,
- adaptConnectionHdfs,
- adaptConnectionHive,
- adaptConnectionMsSql,
- adaptConnectionMySql,
- adaptConnectionOracle,
- adaptConnectionPostgres,
- adaptConnectionS3,
- ConnectionData,
-} from '@entities/connection';
-
-import { AdaptConnectionTypeRequestProps } from './types';
-
-/* Util for for creating ConnectionData object for preparing request data for creating/updating connection */
-export const adaptConnectionTypeRequest = (values: AdaptConnectionTypeRequestProps): ConnectionData => {
- switch (values.type) {
- case ConnectionType.HDFS:
- return adaptConnectionHdfs(values);
- case ConnectionType.HIVE:
- return adaptConnectionHive(values);
- case ConnectionType.ORACLE:
- return adaptConnectionOracle(values);
- case ConnectionType.POSTGRES:
- return adaptConnectionPostgres(values);
- case ConnectionType.CLICKHOUSE:
- return adaptConnectionClickhouse(values);
- case ConnectionType.MY_SQL:
- return adaptConnectionMySql(values);
- case ConnectionType.MS_SQL:
- return adaptConnectionMsSql(values);
- case ConnectionType.S3:
- return adaptConnectionS3(values);
- }
-};
diff --git a/src/features/connection/utils/adaptConnectionTypeRequest/types.ts b/src/features/connection/utils/adaptConnectionTypeRequest/types.ts
deleted file mode 100644
index 01f42b7c..00000000
--- a/src/features/connection/utils/adaptConnectionTypeRequest/types.ts
+++ /dev/null
@@ -1,3 +0,0 @@
-import { ConnectionData } from '@entities/connection';
-
-export type AdaptConnectionTypeRequestProps = ConnectionData['auth_data'] & ConnectionData['connection_data'];
diff --git a/src/features/connection/utils/index.ts b/src/features/connection/utils/index.ts
deleted file mode 100644
index bca9a6c7..00000000
--- a/src/features/connection/utils/index.ts
+++ /dev/null
@@ -1 +0,0 @@
-export * from './adaptConnectionTypeRequest';
diff --git a/src/features/transfer/MutateTransferForm/hooks/useSelectConnectionType/index.ts b/src/features/transfer/MutateTransferForm/hooks/useSelectConnectionType/index.ts
index b1ca74ec..d0e8c1cd 100644
--- a/src/features/transfer/MutateTransferForm/hooks/useSelectConnectionType/index.ts
+++ b/src/features/transfer/MutateTransferForm/hooks/useSelectConnectionType/index.ts
@@ -15,7 +15,7 @@ export const useSelectConnectionType = ({
const [selectedConnectionType, setConnectionType] = useState(initialConnectionType);
const handleSelectConnection = (value: string | number, connection: OptionItem) => {
- const connectionType = connection.data.auth_data.type;
+ const connectionType = connection.data.type;
setConnectionType(connectionType);
formInstance.setFieldValue([connectionParamFieldName, 'type'], connectionType);
};