diff --git a/src/entities/connection/api/types.ts b/src/entities/connection/api/types.ts index 03095169..1fe82bb5 100644 --- a/src/entities/connection/api/types.ts +++ b/src/entities/connection/api/types.ts @@ -8,22 +8,32 @@ export type Connection = { } & ConnectionData; export type ConnectionData = - | ConnectionHive + | ConnectionFtp + | ConnectionFtps + | ConnectionSftp + | ConnectionWebdav + | ConnectionSamba | ConnectionHdfs + | ConnectionS3 + | ConnectionHive | ConnectionOracle | ConnectionPostgres | ConnectionClickhouse | ConnectionMySql - | ConnectionMsSql - | ConnectionS3; + | ConnectionMsSql; export type ConnectionBucketStyle = 'domain' | 'path'; export type ConnectionProtocol = 'https' | 'http'; +export type ConnectionSambaProtocol = 'SMB' | 'NetBIOS'; + +export type ConnectionSambaAuthType = 'NTLMv1' | 'NTLMv2'; + export enum ConnectionAuthType { BASIC = 'basic', S3 = 's3', + SAMBA = 'samba', } interface ConnectionAuthBasic { @@ -38,6 +48,13 @@ interface ConnectionAuthS3 { secret_key?: string; } +interface ConnectionAuthSamba { + type: ConnectionAuthType.SAMBA; + user: string; + password?: string; + auth_type: ConnectionSambaAuthType; +} + export interface ConnectionHive { type: ConnectionType.HIVE; auth_data: ConnectionAuthBasic; @@ -81,7 +98,7 @@ export interface ConnectionClickhouse { connection_data: { host: string; port: number; - database_name: string; + database_name: string | null; }; } @@ -105,6 +122,55 @@ export interface ConnectionMsSql { }; } +export interface ConnectionFtp { + type: ConnectionType.FTP; + auth_data: ConnectionAuthBasic; + connection_data: { + host: string; + port: number; + }; +} + +export interface ConnectionFtps { + type: ConnectionType.FTPS; + auth_data: ConnectionAuthBasic; + connection_data: { + host: string; + port: number; + }; +} + +export interface ConnectionSftp { + type: ConnectionType.SFTP; + auth_data: ConnectionAuthBasic; + connection_data: { + host: string; + port: number; + }; +} + +export interface ConnectionWebdav { + type: ConnectionType.WEBDAV; + auth_data: ConnectionAuthBasic; + connection_data: { + host: string; + port: number | null; + protocol: ConnectionProtocol; + }; +} + +export interface ConnectionSamba { + type: ConnectionType.SAMBA; + auth_data: ConnectionAuthSamba; + connection_data: { + host: string; + share: string; + port: number | null; + protocol: ConnectionSambaProtocol; + domain: string; + }; +} + export interface ConnectionS3 { type: ConnectionType.S3; auth_data: ConnectionAuthS3; diff --git a/src/entities/connection/assets/ftp.svg b/src/entities/connection/assets/ftp.svg new file mode 100644 index 00000000..f469ef12 --- /dev/null +++ b/src/entities/connection/assets/ftp.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/entities/connection/assets/index.ts b/src/entities/connection/assets/index.ts index 83942f9b..6cd0f74e 100644 --- a/src/entities/connection/assets/index.ts +++ b/src/entities/connection/assets/index.ts @@ -6,5 +6,22 @@ import MssqlIcon from './mssql.svg'; import MysqlIcon from './mysql.svg'; import OracleIcon from './oracle.svg'; import PostgresIcon from './postgres.svg'; +import WebDavIcon from './webdav.svg'; +import SambaIcon from './samba.svg'; +import FtpIcon from './ftp.svg'; +import SftpIcon from './sftp.svg'; -export { ClickhouseIcon, HdfsIcon, HiveIcon, MssqlIcon, MysqlIcon, OracleIcon, PostgresIcon, S3Icon }; +export { + ClickhouseIcon, + HdfsIcon, + HiveIcon, + MssqlIcon, + MysqlIcon, + OracleIcon, + PostgresIcon, + S3Icon, + WebDavIcon, + SambaIcon, + FtpIcon, + SftpIcon, +}; diff --git a/src/entities/connection/assets/samba.svg b/src/entities/connection/assets/samba.svg new file mode 100644 index 00000000..b73fd4f9 --- /dev/null +++ b/src/entities/connection/assets/samba.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/entities/connection/assets/sftp.svg b/src/entities/connection/assets/sftp.svg new file mode 100644 index 00000000..cb717816 --- /dev/null +++ b/src/entities/connection/assets/sftp.svg @@ -0,0 +1 @@ +sftp \ No newline at end of file diff --git a/src/entities/connection/assets/webdav.svg b/src/entities/connection/assets/webdav.svg new file mode 100644 index 00000000..1f3c33bb --- /dev/null +++ b/src/entities/connection/assets/webdav.svg @@ -0,0 +1,49 @@ + + + + + + + + + + + + + diff --git a/src/entities/connection/constants.tsx b/src/entities/connection/constants.tsx index 30993d7c..9e2e2244 100644 --- a/src/entities/connection/constants.tsx +++ b/src/entities/connection/constants.tsx @@ -2,41 +2,69 @@ import React, { ReactNode } from 'react'; import { ConnectionType } from '@shared/types'; import { prepareOptionsForSelect } from '@shared/ui'; -import { ClickhouseIcon, HdfsIcon, HiveIcon, MssqlIcon, MysqlIcon, OracleIcon, PostgresIcon, S3Icon } from './assets'; +import { + ClickhouseIcon, + FtpIcon, + HdfsIcon, + HiveIcon, + MssqlIcon, + MysqlIcon, + OracleIcon, + PostgresIcon, + S3Icon, + SambaIcon, + SftpIcon, + WebDavIcon, +} from './assets'; import { ConnectionBucketStyle, ConnectionProtocol } from './api'; export const CONNECTION_TYPE_NAMES: Record = { - [ConnectionType.CLICKHOUSE]: 'ClickHouse', + [ConnectionType.FTP]: 'FTP', + [ConnectionType.FTPS]: 'FTPS', + [ConnectionType.SFTP]: 'SFTP', + [ConnectionType.WEBDAV]: 'WebDAV', + [ConnectionType.SAMBA]: 'Samba', [ConnectionType.HDFS]: 'HDFS', + [ConnectionType.S3]: 'S3', + [ConnectionType.CLICKHOUSE]: 'ClickHouse', [ConnectionType.HIVE]: 'Hive', [ConnectionType.MS_SQL]: 'MSSQL', [ConnectionType.MY_SQL]: 'MySQL', [ConnectionType.ORACLE]: 'Oracle', [ConnectionType.POSTGRES]: 'Postgres', - [ConnectionType.S3]: 'S3', }; export const CONNECTION_ICONS: Record = { - [ConnectionType.CLICKHOUSE]: , + [ConnectionType.FTP]: , + [ConnectionType.FTPS]: , + [ConnectionType.SFTP]: , + [ConnectionType.WEBDAV]: , + [ConnectionType.SAMBA]: , [ConnectionType.HDFS]: , + [ConnectionType.S3]: , + [ConnectionType.CLICKHOUSE]: , [ConnectionType.HIVE]: , [ConnectionType.MS_SQL]: , [ConnectionType.MY_SQL]: , [ConnectionType.ORACLE]: , [ConnectionType.POSTGRES]: , - [ConnectionType.S3]: , }; export const CONNECTION_TYPE_SELECT_OPTIONS = prepareOptionsForSelect({ data: [ { value: ConnectionType.CLICKHOUSE, label: CONNECTION_TYPE_NAMES[ConnectionType.CLICKHOUSE] }, + { value: ConnectionType.FTP, label: CONNECTION_TYPE_NAMES[ConnectionType.FTP] }, + { value: ConnectionType.FTPS, label: CONNECTION_TYPE_NAMES[ConnectionType.FTPS] }, { value: ConnectionType.HDFS, label: CONNECTION_TYPE_NAMES[ConnectionType.HDFS] }, { value: ConnectionType.HIVE, label: CONNECTION_TYPE_NAMES[ConnectionType.HIVE] }, { value: ConnectionType.MS_SQL, label: CONNECTION_TYPE_NAMES[ConnectionType.MS_SQL] }, { value: ConnectionType.MY_SQL, label: CONNECTION_TYPE_NAMES[ConnectionType.MY_SQL] }, { value: ConnectionType.ORACLE, label: CONNECTION_TYPE_NAMES[ConnectionType.ORACLE] }, { value: ConnectionType.POSTGRES, label: CONNECTION_TYPE_NAMES[ConnectionType.POSTGRES] }, + { value: ConnectionType.SAMBA, label: CONNECTION_TYPE_NAMES[ConnectionType.SAMBA] }, + { value: ConnectionType.SFTP, label: CONNECTION_TYPE_NAMES[ConnectionType.SFTP] }, { value: ConnectionType.S3, label: CONNECTION_TYPE_NAMES[ConnectionType.S3] }, + { value: ConnectionType.WEBDAV, label: CONNECTION_TYPE_NAMES[ConnectionType.WEBDAV] }, ], renderLabel: (data) => data.label, renderValue: (data) => data.value, diff --git a/src/entities/connection/ui/ConnectionTypeForm/components/ConnectionAuthSamba/constants.ts b/src/entities/connection/ui/ConnectionTypeForm/components/ConnectionAuthSamba/constants.ts new file mode 100644 index 00000000..31f45e83 --- /dev/null +++ b/src/entities/connection/ui/ConnectionTypeForm/components/ConnectionAuthSamba/constants.ts @@ -0,0 +1,8 @@ +import { ConnectionSambaAuthType } from '@entities/connection'; +import { prepareOptionsForSelect } from '@shared/ui'; + +export const CONNECTION_SAMBA_AUTH_TYPE_SELECT_OPTIONS = prepareOptionsForSelect({ + data: ['NTLMv1', 'NTLMv2'], + renderLabel: (data) => data, + renderValue: (data) => data, +}); diff --git a/src/entities/connection/ui/ConnectionTypeForm/components/ConnectionAuthSamba/index.tsx b/src/entities/connection/ui/ConnectionTypeForm/components/ConnectionAuthSamba/index.tsx new file mode 100644 index 00000000..e8d4cea7 --- /dev/null +++ b/src/entities/connection/ui/ConnectionTypeForm/components/ConnectionAuthSamba/index.tsx @@ -0,0 +1,33 @@ +import React from 'react'; +import { Form, Input } from 'antd'; +import { Select } from '@shared/ui'; + +import { useSensitiveFields } from '../../hooks'; + +import { CONNECTION_SAMBA_AUTH_TYPE_SELECT_OPTIONS } from './constants'; + +export const ConnectionAuthSamba = () => { + const { isRequired } = useSensitiveFields(); + + return ( + <> + {/* Hide Form.Item control, because its value is set in 'useSelectConnectionType' hook */} + + + + + + + + + diff --git a/src/entities/connection/ui/ConnectionTypeForm/components/ConnectionFtp/index.tsx b/src/entities/connection/ui/ConnectionTypeForm/components/ConnectionFtp/index.tsx new file mode 100644 index 00000000..00456afa --- /dev/null +++ b/src/entities/connection/ui/ConnectionTypeForm/components/ConnectionFtp/index.tsx @@ -0,0 +1,19 @@ +import React from 'react'; +import { Form, Input, InputNumber } from 'antd'; + +import { MAX_ALLOWED_PORT, MIN_ALLOWED_PORT } from '../../constants'; +import { ConnectionAuthBasic } from '../ConnectionAuthBasic'; + +export const ConnectionFtp = () => { + return ( + <> + + + + + + + + + ); +}; diff --git a/src/entities/connection/ui/ConnectionTypeForm/components/ConnectionFtps/index.tsx b/src/entities/connection/ui/ConnectionTypeForm/components/ConnectionFtps/index.tsx new file mode 100644 index 00000000..f9ca5701 --- /dev/null +++ b/src/entities/connection/ui/ConnectionTypeForm/components/ConnectionFtps/index.tsx @@ -0,0 +1,19 @@ +import React from 'react'; +import { Form, Input, InputNumber } from 'antd'; + +import { MAX_ALLOWED_PORT, MIN_ALLOWED_PORT } from '../../constants'; +import { ConnectionAuthBasic } from '../ConnectionAuthBasic'; + +export const ConnectionSftp = () => { + return ( + <> + + + + + + + + + ); +}; diff --git a/src/entities/connection/ui/ConnectionTypeForm/components/ConnectionS3/index.tsx b/src/entities/connection/ui/ConnectionTypeForm/components/ConnectionS3/index.tsx index cf1bc91a..6c140fa2 100644 --- a/src/entities/connection/ui/ConnectionTypeForm/components/ConnectionS3/index.tsx +++ b/src/entities/connection/ui/ConnectionTypeForm/components/ConnectionS3/index.tsx @@ -12,10 +12,10 @@ export const ConnectionS3 = () => { - + ({ + data: ['NetBIOS', 'SMB'], + renderLabel: (data) => data, + renderValue: (data) => data, +}); diff --git a/src/entities/connection/ui/ConnectionTypeForm/components/ConnectionSamba/index.tsx b/src/entities/connection/ui/ConnectionTypeForm/components/ConnectionSamba/index.tsx new file mode 100644 index 00000000..19ee536a --- /dev/null +++ b/src/entities/connection/ui/ConnectionTypeForm/components/ConnectionSamba/index.tsx @@ -0,0 +1,35 @@ +import React from 'react'; +import { Form, Input, InputNumber } from 'antd'; +import { Select } from '@shared/ui'; + +import { MAX_ALLOWED_PORT, MIN_ALLOWED_PORT } from '../../constants'; +import { ConnectionAuthBasic } from '../ConnectionAuthBasic'; + +import { CONNECTION_SAMBA_PROTOCOL_SELECT_OPTIONS } from './constants'; + +export const ConnectionSamba = () => { + return ( + <> + + + + + + + + + + + + ); +}; diff --git a/src/entities/connection/ui/ConnectionTypeForm/components/ConnectionSftp/index.tsx b/src/entities/connection/ui/ConnectionTypeForm/components/ConnectionSftp/index.tsx new file mode 100644 index 00000000..30196ed9 --- /dev/null +++ b/src/entities/connection/ui/ConnectionTypeForm/components/ConnectionSftp/index.tsx @@ -0,0 +1,19 @@ +import React from 'react'; +import { Form, Input, InputNumber } from 'antd'; + +import { MAX_ALLOWED_PORT, MIN_ALLOWED_PORT } from '../../constants'; +import { ConnectionAuthBasic } from '../ConnectionAuthBasic'; + +export const ConnectionFtps = () => { + return ( + <> + + + + + + + + + ); +}; diff --git a/src/entities/connection/ui/ConnectionTypeForm/components/ConnectionWebdav/index.tsx b/src/entities/connection/ui/ConnectionTypeForm/components/ConnectionWebdav/index.tsx new file mode 100644 index 00000000..73cdc01f --- /dev/null +++ b/src/entities/connection/ui/ConnectionTypeForm/components/ConnectionWebdav/index.tsx @@ -0,0 +1,24 @@ +import React from 'react'; +import { Form, Input, InputNumber } from 'antd'; +import { Select } from '@shared/ui'; +import { CONNECTION_PROTOCOL_SELECT_OPTIONS } from '@entities/connection'; + +import { MAX_ALLOWED_PORT, MIN_ALLOWED_PORT } from '../../constants'; +import { ConnectionAuthBasic } from '../ConnectionAuthBasic'; + +export const ConnectionWebdav = () => { + return ( + <> + + + + + - - ); -}; diff --git a/src/entities/transfer/ui/TransferConnectionClickhouse/types.ts b/src/entities/transfer/ui/TransferConnectionClickhouse/types.ts deleted file mode 100644 index 2394b759..00000000 --- a/src/entities/transfer/ui/TransferConnectionClickhouse/types.ts +++ /dev/null @@ -1,3 +0,0 @@ -import { ConnectionParamFieldName } from '../../types'; - -export interface TransferConnectionClickhouseProps extends ConnectionParamFieldName {} diff --git a/src/entities/transfer/ui/TransferConnectionHdfs/index.tsx b/src/entities/transfer/ui/TransferConnectionFileType/index.tsx similarity index 80% rename from src/entities/transfer/ui/TransferConnectionHdfs/index.tsx rename to src/entities/transfer/ui/TransferConnectionFileType/index.tsx index 9961a910..362d73f7 100644 --- a/src/entities/transfer/ui/TransferConnectionHdfs/index.tsx +++ b/src/entities/transfer/ui/TransferConnectionFileType/index.tsx @@ -3,9 +3,9 @@ import { Divider, Form, Input } from 'antd'; import { ABSOLUTE_PATH_REGEXP } from '@shared/constants'; import { FileFormatParams, FileNameTemplate } from '@entities/file/@x/transfer'; -import { TransferConnectionHdfsProps } from './types'; +import { TransferConnectionFileTypeProps } from './types'; -export const TransferConnectionHdfs = ({ name }: TransferConnectionHdfsProps) => { +export const TransferConnectionFileType = ({ name }: TransferConnectionFileTypeProps) => { return ( <> { - return ( - - - - ); -}; diff --git a/src/entities/transfer/ui/TransferConnectionHive/types.ts b/src/entities/transfer/ui/TransferConnectionHive/types.ts deleted file mode 100644 index fb00a3be..00000000 --- a/src/entities/transfer/ui/TransferConnectionHive/types.ts +++ /dev/null @@ -1,3 +0,0 @@ -import { ConnectionParamFieldName } from '../../types'; - -export interface TransferConnectionHiveProps extends ConnectionParamFieldName {} diff --git a/src/entities/transfer/ui/TransferConnectionMsSql/index.tsx b/src/entities/transfer/ui/TransferConnectionMsSql/index.tsx deleted file mode 100644 index 812b9524..00000000 --- a/src/entities/transfer/ui/TransferConnectionMsSql/index.tsx +++ /dev/null @@ -1,12 +0,0 @@ -import React from 'react'; -import { Form, Input } from 'antd'; - -import { TransferConnectionMsSqlProps } from './types'; - -export const TransferConnectionMsSql = ({ name }: TransferConnectionMsSqlProps) => { - return ( - - - - ); -}; diff --git a/src/entities/transfer/ui/TransferConnectionMsSql/types.ts b/src/entities/transfer/ui/TransferConnectionMsSql/types.ts deleted file mode 100644 index f00ecfc0..00000000 --- a/src/entities/transfer/ui/TransferConnectionMsSql/types.ts +++ /dev/null @@ -1,3 +0,0 @@ -import { ConnectionParamFieldName } from '../../types'; - -export interface TransferConnectionMsSqlProps extends ConnectionParamFieldName {} diff --git a/src/entities/transfer/ui/TransferConnectionMySql/index.tsx b/src/entities/transfer/ui/TransferConnectionMySql/index.tsx deleted file mode 100644 index 37937c24..00000000 --- a/src/entities/transfer/ui/TransferConnectionMySql/index.tsx +++ /dev/null @@ -1,12 +0,0 @@ -import React from 'react'; -import { Form, Input } from 'antd'; - -import { TransferConnectionMySqlProps } from './types'; - -export const TransferConnectionMySql = ({ name }: TransferConnectionMySqlProps) => { - return ( - - - - ); -}; diff --git a/src/entities/transfer/ui/TransferConnectionMySql/types.ts b/src/entities/transfer/ui/TransferConnectionMySql/types.ts deleted file mode 100644 index 0dfa8b9c..00000000 --- a/src/entities/transfer/ui/TransferConnectionMySql/types.ts +++ /dev/null @@ -1,3 +0,0 @@ -import { ConnectionParamFieldName } from '../../types'; - -export interface TransferConnectionMySqlProps extends ConnectionParamFieldName {} diff --git a/src/entities/transfer/ui/TransferConnectionOracle/types.ts b/src/entities/transfer/ui/TransferConnectionOracle/types.ts deleted file mode 100644 index 4c0a0289..00000000 --- a/src/entities/transfer/ui/TransferConnectionOracle/types.ts +++ /dev/null @@ -1,3 +0,0 @@ -import { ConnectionParamFieldName } from '../../types'; - -export interface TransferConnectionOracleProps extends ConnectionParamFieldName {} diff --git a/src/entities/transfer/ui/TransferConnectionPostgres/index.tsx b/src/entities/transfer/ui/TransferConnectionPostgres/index.tsx deleted file mode 100644 index adf298e2..00000000 --- a/src/entities/transfer/ui/TransferConnectionPostgres/index.tsx +++ /dev/null @@ -1,12 +0,0 @@ -import React from 'react'; -import { Form, Input } from 'antd'; - -import { TransferConnectionPostgresProps } from './types'; - -export const TransferConnectionPostgres = ({ name }: TransferConnectionPostgresProps) => { - return ( - - - - ); -}; diff --git a/src/entities/transfer/ui/TransferConnectionS3/index.tsx b/src/entities/transfer/ui/TransferConnectionS3/index.tsx deleted file mode 100644 index 33704012..00000000 --- a/src/entities/transfer/ui/TransferConnectionS3/index.tsx +++ /dev/null @@ -1,23 +0,0 @@ -import React from 'react'; -import { Divider, Form, Input } from 'antd'; -import { ABSOLUTE_PATH_REGEXP } from '@shared/constants'; -import { FileFormatParams, FileNameTemplate } from '@entities/file/@x/transfer'; - -import { TransferConnectionS3Props } from './types'; - -export const TransferConnectionS3 = ({ name }: TransferConnectionS3Props) => { - return ( - <> - - - - {name === 'target_params' && } - File format settings - - - ); -}; diff --git a/src/entities/transfer/ui/TransferConnectionS3/types.ts b/src/entities/transfer/ui/TransferConnectionS3/types.ts deleted file mode 100644 index 2918984c..00000000 --- a/src/entities/transfer/ui/TransferConnectionS3/types.ts +++ /dev/null @@ -1,3 +0,0 @@ -import { ConnectionParamFieldName } from '../../types'; - -export interface TransferConnectionS3Props extends ConnectionParamFieldName {} diff --git a/src/entities/transfer/ui/TransferConnectionOracle/index.tsx b/src/entities/transfer/ui/TransferConnectionTableType/index.tsx similarity index 61% rename from src/entities/transfer/ui/TransferConnectionOracle/index.tsx rename to src/entities/transfer/ui/TransferConnectionTableType/index.tsx index 6efac54a..c7f4568e 100644 --- a/src/entities/transfer/ui/TransferConnectionOracle/index.tsx +++ b/src/entities/transfer/ui/TransferConnectionTableType/index.tsx @@ -1,9 +1,9 @@ import React from 'react'; import { Form, Input } from 'antd'; -import { TransferConnectionOracleProps } from './types'; +import { TransferConnectionTableTypeProps } from './types'; -export const TransferConnectionOracle = ({ name }: TransferConnectionOracleProps) => { +export const TransferConnectionTableType = ({ name }: TransferConnectionTableTypeProps) => { return ( diff --git a/src/entities/transfer/ui/TransferConnectionTableType/types.ts b/src/entities/transfer/ui/TransferConnectionTableType/types.ts new file mode 100644 index 00000000..9c8f4cb7 --- /dev/null +++ b/src/entities/transfer/ui/TransferConnectionTableType/types.ts @@ -0,0 +1,3 @@ +import { ConnectionParamFieldName } from '../../types'; + +export interface TransferConnectionTableTypeProps extends ConnectionParamFieldName {} diff --git a/src/entities/transfer/ui/index.ts b/src/entities/transfer/ui/index.ts index a30df69c..80765616 100644 --- a/src/entities/transfer/ui/index.ts +++ b/src/entities/transfer/ui/index.ts @@ -1,8 +1,2 @@ -export * from './TransferConnectionClickhouse'; -export * from './TransferConnectionHdfs'; -export * from './TransferConnectionHive'; -export * from './TransferConnectionMsSql'; -export * from './TransferConnectionMySql'; -export * from './TransferConnectionOracle'; -export * from './TransferConnectionPostgres'; -export * from './TransferConnectionS3'; +export * from './TransferConnectionFileType'; +export * from './TransferConnectionTableType'; diff --git a/src/features/connection/ConnectionDetailInfo/utils/getConnectionAuthData/index.ts b/src/features/connection/ConnectionDetailInfo/utils/getConnectionAuthData/index.ts index fcefe7a0..16877627 100644 --- a/src/features/connection/ConnectionDetailInfo/utils/getConnectionAuthData/index.ts +++ b/src/features/connection/ConnectionDetailInfo/utils/getConnectionAuthData/index.ts @@ -13,6 +13,21 @@ export const getConnectionAuthData = (connection: Connection): DescriptionItem[] content: auth_data.access_key, }, ]; + case ConnectionType.SAMBA: + return [ + { + label: 'User', + content: auth_data.user, + }, + { + label: 'Auth type', + content: auth_data.auth_type, + }, + ]; + case ConnectionType.FTP: + case ConnectionType.FTPS: + case ConnectionType.SFTP: + case ConnectionType.WEBDAV: case ConnectionType.HIVE: case ConnectionType.HDFS: case ConnectionType.ORACLE: diff --git a/src/features/connection/ConnectionDetailInfo/utils/getConnectionData/index.ts b/src/features/connection/ConnectionDetailInfo/utils/getConnectionData/index.ts index 413d7ea7..56d93c5d 100644 --- a/src/features/connection/ConnectionDetailInfo/utils/getConnectionData/index.ts +++ b/src/features/connection/ConnectionDetailInfo/utils/getConnectionData/index.ts @@ -6,6 +6,57 @@ export const getConnectionData = (connection: Connection): DescriptionItem[] => const { type, connection_data } = connection; switch (type) { + case ConnectionType.FTP: + case ConnectionType.FTPS: + case ConnectionType.SFTP: + return [ + { + label: 'Host', + content: connection_data.host, + }, + { + label: 'Port', + content: connection_data.port, + }, + ]; + case ConnectionType.WEBDAV: + return [ + { + label: 'Host', + content: connection_data.host, + }, + { + label: 'Protocol', + content: connection_data.protocol, + }, + { + label: 'Port', + content: connection_data.port || '', + }, + ]; + case ConnectionType.SAMBA: + return [ + { + label: 'Host', + content: connection_data.host, + }, + { + label: 'Share', + content: connection_data.share, + }, + { + label: 'Protocol', + content: connection_data.protocol, + }, + { + label: 'Port', + content: connection_data.port || '', + }, + { + label: 'Domain', + content: connection_data.domain, + }, + ]; case ConnectionType.ORACLE: return [ { @@ -28,7 +79,7 @@ export const getConnectionData = (connection: Connection): DescriptionItem[] => return [ { label: 'Database name', - content: connection_data.database_name, + content: connection_data.database_name || '', }, { label: 'Host', diff --git a/src/features/transfer/MutateTransferForm/components/SourceParams/constants.tsx b/src/features/transfer/MutateTransferForm/components/SourceParams/constants.tsx index 7a3a9dea..cb431062 100644 --- a/src/features/transfer/MutateTransferForm/components/SourceParams/constants.tsx +++ b/src/features/transfer/MutateTransferForm/components/SourceParams/constants.tsx @@ -1,23 +1,19 @@ import React from 'react'; import { ConnectionType } from '@shared/types'; -import { - TransferConnectionHdfs, - TransferConnectionHive, - TransferConnectionOracle, - TransferConnectionPostgres, - TransferConnectionClickhouse, - TransferConnectionMySql, - TransferConnectionMsSql, - TransferConnectionS3, -} from '@entities/transfer'; +import { TransferConnectionFileType, TransferConnectionTableType } from '@entities/transfer'; export const TRANSFER_SOURCE_CONNECTION_TYPE_COMPONENT = { - [ConnectionType.HDFS]: , - [ConnectionType.HIVE]: , - [ConnectionType.ORACLE]: , - [ConnectionType.POSTGRES]: , - [ConnectionType.CLICKHOUSE]: , - [ConnectionType.MY_SQL]: , - [ConnectionType.MS_SQL]: , - [ConnectionType.S3]: , + [ConnectionType.FTP]: , + [ConnectionType.FTPS]: , + [ConnectionType.SFTP]: , + [ConnectionType.WEBDAV]: , + [ConnectionType.SAMBA]: , + [ConnectionType.HDFS]: , + [ConnectionType.S3]: , + [ConnectionType.HIVE]: , + [ConnectionType.ORACLE]: , + [ConnectionType.POSTGRES]: , + [ConnectionType.CLICKHOUSE]: , + [ConnectionType.MY_SQL]: , + [ConnectionType.MS_SQL]: , }; diff --git a/src/features/transfer/MutateTransferForm/components/StrategyParams/components/IncrementByForm/constants.ts b/src/features/transfer/MutateTransferForm/components/StrategyParams/components/IncrementByForm/constants.ts new file mode 100644 index 00000000..c095fa6a --- /dev/null +++ b/src/features/transfer/MutateTransferForm/components/StrategyParams/components/IncrementByForm/constants.ts @@ -0,0 +1,14 @@ +import { TransferConnectionFileIncrementBy } from '@entities/transfer'; +import { prepareOptionsForSelect } from '@shared/ui'; + +export const STRATEGY_PARAMS_INCREMENT_BY_SELECT_OPTIONS = prepareOptionsForSelect<{ + label: string; + value: TransferConnectionFileIncrementBy; +}>({ + data: [ + { label: 'File modification type', value: 'file_modified_since' }, + { label: 'File name', value: 'file_name' }, + ], + renderLabel: (data) => data.label, + renderValue: (data) => data.value, +}); diff --git a/src/features/transfer/MutateTransferForm/components/StrategyParams/components/IncrementByForm/index.tsx b/src/features/transfer/MutateTransferForm/components/StrategyParams/components/IncrementByForm/index.tsx index 1bd19f40..61220b04 100644 --- a/src/features/transfer/MutateTransferForm/components/StrategyParams/components/IncrementByForm/index.tsx +++ b/src/features/transfer/MutateTransferForm/components/StrategyParams/components/IncrementByForm/index.tsx @@ -1,8 +1,10 @@ import React from 'react'; import { ConnectionType } from '@shared/types'; import { Form, Input } from 'antd'; +import { Select } from '@shared/ui'; import { IncrementByFormProps } from './types'; +import { STRATEGY_PARAMS_INCREMENT_BY_SELECT_OPTIONS } from './constants'; export const IncrementByForm = ({ sourceConnectionType }: IncrementByFormProps) => { switch (sourceConnectionType) { @@ -17,6 +19,20 @@ export const IncrementByForm = ({ sourceConnectionType }: IncrementByFormProps) ); + case ConnectionType.FTP: + case ConnectionType.FTPS: + case ConnectionType.SFTP: + case ConnectionType.WEBDAV: + case ConnectionType.SAMBA: + return ( + +