diff --git a/frontend-web/src/pages/Data/DataSource/form/DatabaseForm.tsx b/frontend-web/src/pages/Data/DataSource/form/DatabaseForm.tsx index 317dff9..85c5620 100644 --- a/frontend-web/src/pages/Data/DataSource/form/DatabaseForm.tsx +++ b/frontend-web/src/pages/Data/DataSource/form/DatabaseForm.tsx @@ -72,7 +72,6 @@ const DatabaseForm = props => { { + const { testConnect, formData, setFormData } = props; + const handleSubmit = data => { + data.preventDefault(); + const item = { + name: data.target.name.value, + account: data.target.account.value, + username: data.target.username.value, + password: data.target.password.value, + database: data.target.database.value, + application: data.target.application.value, + schema: data.target.schema.value, + warehouse: data.target.warehouse.value, + }; + testConnect(item); + }; + + const handleNameChange = event => { + setFormData(prevState => ({ ...prevState, [event.target.name]: event.target.value })); + }; + + const handleChange = event => { + setFormData(prevState => ({ + ...prevState, + snowflake: { ...prevState.snowflake, [event.target.name]: event.target.value }, + })); + }; + + return ( + + + + + + + {' '} + + + + + + + ); +}; + +export default SnowflakeDatabaseForm; diff --git a/frontend-web/src/pages/Data/DataSource/index.tsx b/frontend-web/src/pages/Data/DataSource/index.tsx index 5d41292..8d99cdd 100644 --- a/frontend-web/src/pages/Data/DataSource/index.tsx +++ b/frontend-web/src/pages/Data/DataSource/index.tsx @@ -14,6 +14,7 @@ import SqliteDatabaseForm from '@/pages/Data/DataSource/form/SqliteDatabaseForm' import BigQueryDatabaseForm from '@/pages/Data/DataSource/form/BigQueryDatabaseForm'; import { SnackbarContext } from '@/contexts/AlertContext'; import { LoadingContext } from '@/contexts/LoadingContext'; +import SnowflakeDatabaseForm from '@/pages/Data/DataSource/form/SnowflakeDatabaseForm'; function DataSource() { const { sourceId } = useParams(); @@ -47,6 +48,16 @@ function DataSource() { filename: '', database: '', }, + snowflake: { + name: '', + account: '', + username: '', + password: '', + database: '', + application: '', + schema: '', + warehouse: '', + }, }); useLayoutEffect(() => { @@ -81,14 +92,22 @@ function DataSource() { temp.sqlite = { filename: databaseInfo.connectionConfig.filename, }; - } - if (databaseInfo.type === 'bigquery') { + } else if (databaseInfo.type === 'bigquery') { temp.bigquery = { - name: databaseInfo.connectionConfig.name, projectId: databaseInfo.connectionConfig.projectId, keyFilename: databaseInfo.connectionConfig.keyFilename, schema: databaseInfo.connectionConfig.schema, }; + } else if (databaseInfo.type === 'snowflake') { + temp.snowflake = { + account: databaseInfo.connectionConfig.account, + username: databaseInfo.connectionConfig.username, + password: databaseInfo.connectionConfig.password, + database: databaseInfo.connectionConfig.database, + application: databaseInfo.connectionConfig.application, + schema: databaseInfo.connectionConfig.schema, + warehouse: databaseInfo.connectionConfig.warehouse, + }; } else { temp.default = { host: databaseInfo.connectionConfig.host, @@ -153,6 +172,8 @@ function DataSource() { return 'sqlite'; case 'bigquery': return 'bigquery'; + case 'snowflake': + return 'snowflake'; default: return 'default'; } @@ -221,6 +242,8 @@ function DataSource() { return ; case 'bigquery': return ; + case 'snowflake': + return ; default: return ; } diff --git a/frontend-web/src/theme/theme.tsx b/frontend-web/src/theme/theme.tsx index 36a307f..b402c5e 100644 --- a/frontend-web/src/theme/theme.tsx +++ b/frontend-web/src/theme/theme.tsx @@ -318,6 +318,26 @@ export default createTheme({ }, }, }, + MuiAlert: { + styleOverrides: { + standardSuccess: { + color: '#184a00', + backgroundColor: '#ecf8e6', + }, + standardError: { + color: '#a00000', + backgroundColor: '#ffeded', + }, + }, + }, + MuiSnackbar: { + styleOverrides: { + root: { + borderRadius: '4px', + boxShadow: '2px 2px 4px 0 rgba(0, 0, 0, 0.15)', + }, + }, + }, MuiCssBaseline: { styleOverrides: { 'html, body, #root': {