@quillsql/admin 1.6.3 → 1.7.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cjs/Admin.d.ts +14 -8
- package/dist/cjs/Admin.d.ts.map +1 -1
- package/dist/cjs/Admin.js +134 -25
- package/dist/cjs/AdminProvider.d.ts +26 -5
- package/dist/cjs/AdminProvider.d.ts.map +1 -1
- package/dist/cjs/AdminProvider.js +174 -85
- package/dist/cjs/api/ConnectionClient.d.ts +26 -12
- package/dist/cjs/api/ConnectionClient.d.ts.map +1 -1
- package/dist/cjs/api/ConnectionClient.js +198 -31
- package/dist/cjs/assets/ArrowDownHeadIcon.d.ts.map +1 -1
- package/dist/cjs/assets/XIcon.d.ts.map +1 -1
- package/dist/cjs/components/CardSection.d.ts.map +1 -1
- package/dist/cjs/components/CardSection.js +4 -2
- package/dist/cjs/components/ClipboardButton.d.ts.map +1 -1
- package/dist/cjs/components/DashboardSelectPopover.d.ts.map +1 -1
- package/dist/cjs/components/DashboardSelectPopover.js +46 -7
- package/dist/cjs/components/DatabaseSelector.d.ts +3 -1
- package/dist/cjs/components/DatabaseSelector.d.ts.map +1 -1
- package/dist/cjs/components/DatabaseSelector.js +3 -2
- package/dist/cjs/components/DateRangePicker/SingleDatePicker.d.ts.map +1 -1
- package/dist/cjs/components/DateRangePicker/SingleDatePicker.js +31 -7
- package/dist/cjs/components/DateRangePicker/YearlessDateRangePicker.d.ts.map +1 -1
- package/dist/cjs/components/DateRangePicker/YearlessDateRangePicker.js +31 -7
- package/dist/cjs/components/DateRangePicker/dateRangePickerUtils.d.ts.map +1 -1
- package/dist/cjs/components/DropDownMenuWithLabel.d.ts.map +1 -1
- package/dist/cjs/components/DropDownMenuWithLabel.js +8 -1
- package/dist/cjs/components/DynamicBanner.d.ts +3 -2
- package/dist/cjs/components/DynamicBanner.d.ts.map +1 -1
- package/dist/cjs/components/DynamicBanner.js +7 -2
- package/dist/cjs/components/EmptyDashboardComponent/index.d.ts.map +1 -1
- package/dist/cjs/components/EmptyDashboardComponent/index.js +3 -2
- package/dist/cjs/components/EmptyVirtualTablesComponent.d.ts.map +1 -1
- package/dist/cjs/components/EmptyVirtualTablesComponent.js +4 -1
- package/dist/cjs/components/FormTooltip.d.ts.map +1 -1
- package/dist/cjs/components/FormTooltip.js +4 -1
- package/dist/cjs/components/InputLabel.d.ts.map +1 -1
- package/dist/cjs/components/InputLabel.js +4 -2
- package/dist/cjs/components/InternalDashboard/DashboardFilter.d.ts +1 -1
- package/dist/cjs/components/InternalDashboard/DashboardFilter.d.ts.map +1 -1
- package/dist/cjs/components/InternalDashboard/DashboardLoadingComponent.d.ts.map +1 -1
- package/dist/cjs/components/InternalDashboard/DateRangePicker/QuillDateRangePicker.d.ts.map +1 -1
- package/dist/cjs/components/InternalDashboard/DateRangePicker/QuillDateRangePicker.js +33 -14
- package/dist/cjs/components/InternalDashboard/DateRangePicker/dateRangePickerUtils.d.ts.map +1 -1
- package/dist/cjs/components/InternalDashboard/InternalDashboard.d.ts.map +1 -1
- package/dist/cjs/components/InternalDashboard/InternalDashboard.js +128 -35
- package/dist/cjs/components/OrgSelect.d.ts +0 -6
- package/dist/cjs/components/OrgSelect.d.ts.map +1 -1
- package/dist/cjs/components/OrgSelect.js +79 -47
- package/dist/cjs/components/QuillMultiSelectWithCombo.d.ts +8 -2
- package/dist/cjs/components/QuillMultiSelectWithCombo.d.ts.map +1 -1
- package/dist/cjs/components/QuillMultiSelectWithCombo.js +351 -167
- package/dist/cjs/components/QuillPopover.d.ts.map +1 -1
- package/dist/cjs/components/QuillPopover.js +4 -5
- package/dist/cjs/components/QuillSelect.js +9 -9
- package/dist/cjs/components/QuillSelectWithCombo.d.ts +4 -3
- package/dist/cjs/components/QuillSelectWithCombo.d.ts.map +1 -1
- package/dist/cjs/components/QuillSelectWithCombo.js +47 -21
- package/dist/cjs/components/QuillToolTipPortal.d.ts.map +1 -1
- package/dist/cjs/components/SqlTextEditor.d.ts.map +1 -1
- package/dist/cjs/components/SqlTextEditor.js +15 -2
- package/dist/cjs/components/Tenants/EditTenant.d.ts.map +1 -1
- package/dist/cjs/components/Tenants/EditTenant.js +51 -8
- package/dist/cjs/components/UiComponents.d.ts +16 -43
- package/dist/cjs/components/UiComponents.d.ts.map +1 -1
- package/dist/cjs/components/UiComponents.js +162 -33
- package/dist/cjs/forms/client_onboard/ConnectDatabase.d.ts.map +1 -1
- package/dist/cjs/forms/client_onboard/ConnectDatabase.js +163 -51
- package/dist/cjs/forms/client_onboard/ConnectSchema.d.ts.map +1 -1
- package/dist/cjs/forms/client_onboard/ConnectSchema.js +36 -2
- package/dist/cjs/forms/client_onboard/CreateVirtualTables.d.ts +2 -1
- package/dist/cjs/forms/client_onboard/CreateVirtualTables.d.ts.map +1 -1
- package/dist/cjs/forms/client_onboard/CreateVirtualTables.js +60 -22
- package/dist/cjs/forms/client_onboard/__tests__/ConnectSchema.test.js +2 -1
- package/dist/cjs/forms/client_onboard/__tests__/CreateVirtualTables.test.js +2 -1
- package/dist/cjs/forms/virtual_tables/CreateEditVirtualTable.d.ts.map +1 -1
- package/dist/cjs/forms/virtual_tables/CreateEditVirtualTable.js +101 -15
- package/dist/cjs/hooks/useDatabaseSchema.d.ts.map +1 -1
- package/dist/cjs/hooks/useDatabaseSchema.js +18 -2
- package/dist/cjs/hooks/useLongLoading.d.ts +13 -0
- package/dist/cjs/hooks/useLongLoading.d.ts.map +1 -0
- package/dist/cjs/hooks/useLongLoading.js +67 -0
- package/dist/cjs/hooks/useOnClickOutside.d.ts.map +1 -1
- package/dist/cjs/hooks/useThrottle.d.ts.map +1 -1
- package/dist/cjs/icons/ArrowDownHeadIcon.d.ts.map +1 -1
- package/dist/cjs/icons/CheckCircleIcon.d.ts.map +1 -1
- package/dist/cjs/icons/ExclamationFilledIcon.d.ts.map +1 -1
- package/dist/cjs/icons/ExteriorLinkIcon.d.ts.map +1 -1
- package/dist/cjs/icons/QuestionMarkCircleIcon.d.ts.map +1 -1
- package/dist/cjs/modals/CodePreview.d.ts.map +1 -1
- package/dist/cjs/modals/CodePreview.js +7 -2
- package/dist/cjs/modals/CreateEnvironmentModal.d.ts +5 -0
- package/dist/cjs/modals/CreateEnvironmentModal.d.ts.map +1 -0
- package/dist/cjs/modals/CreateEnvironmentModal.js +21 -0
- package/dist/cjs/modals/EditEnvironmentModal.d.ts.map +1 -1
- package/dist/cjs/modals/EditEnvironmentModal.js +74 -17
- package/dist/cjs/modals/EditFiltersModal.d.ts.map +1 -1
- package/dist/cjs/modals/EditFiltersModal.js +19 -15
- package/dist/cjs/modals/NewDashboardModal.d.ts.map +1 -1
- package/dist/cjs/modals/NewDashboardModal.js +54 -28
- package/dist/cjs/modals/PromoteReportModal.d.ts.map +1 -1
- package/dist/cjs/modals/PromoteReportModal.js +15 -4
- package/dist/cjs/modals/PromoteViewModal.d.ts.map +1 -1
- package/dist/cjs/modals/PromoteViewModal.js +13 -2
- package/dist/cjs/primitives/ButtonPrimitive.d.ts.map +1 -1
- package/dist/cjs/primitives/ButtonPrimitive.js +10 -6
- package/dist/cjs/primitives/CheckboxPrimitive.d.ts.map +1 -1
- package/dist/cjs/primitives/CheckboxPrimitive.js +2 -0
- package/dist/cjs/primitives/HeaderPrimitive.d.ts.map +1 -1
- package/dist/cjs/primitives/HeaderPrimitive.js +11 -7
- package/dist/cjs/primitives/PopoverPrimitive.d.ts.map +1 -1
- package/dist/cjs/primitives/PopoverPrimitive.js +19 -6
- package/dist/cjs/primitives/SecondaryButtonPrimitive.d.ts.map +1 -1
- package/dist/cjs/primitives/SecondaryButtonPrimitive.js +5 -3
- package/dist/cjs/primitives/TogglePrimitive.d.ts.map +1 -1
- package/dist/cjs/public_components/ChartQueryBuilder.d.ts.map +1 -1
- package/dist/cjs/public_components/ChartQueryBuilder.js +17 -7
- package/dist/cjs/public_components/CreateEnvironment.d.ts.map +1 -1
- package/dist/cjs/public_components/CreateEnvironment.js +68 -30
- package/dist/cjs/public_components/DashboardManager.d.ts.map +1 -1
- package/dist/cjs/public_components/DashboardManager.js +71 -4
- package/dist/cjs/public_components/EnvSelectPopover.d.ts +2 -1
- package/dist/cjs/public_components/EnvSelectPopover.d.ts.map +1 -1
- package/dist/cjs/public_components/EnvSelectPopover.js +48 -8
- package/dist/cjs/public_components/VirtualTableManager.d.ts.map +1 -1
- package/dist/cjs/public_components/VirtualTableManager.js +124 -10
- package/dist/cjs/public_components/__tests__/CreateEnvironment.test.js +41 -2
- package/dist/cjs/utils/astProcessing.d.ts.map +1 -1
- package/dist/cjs/utils/columnProcessing.d.ts +1 -0
- package/dist/cjs/utils/columnProcessing.d.ts.map +1 -1
- package/dist/cjs/utils/columnProcessing.js +7 -1
- package/dist/cjs/utils/constants.d.ts +1 -0
- package/dist/cjs/utils/constants.d.ts.map +1 -1
- package/dist/cjs/utils/constants.js +5 -1
- package/dist/cjs/utils/dataEditor.d.ts.map +1 -1
- package/dist/cjs/utils/dataFetcher.d.ts.map +1 -1
- package/dist/cjs/utils/dataFetcher.js +0 -1
- package/dist/cjs/utils/databases.d.ts +6 -1
- package/dist/cjs/utils/databases.d.ts.map +1 -1
- package/dist/cjs/utils/databases.js +23 -5
- package/dist/cjs/utils/delay.d.ts.map +1 -1
- package/dist/cjs/utils/filter.d.ts +17 -21
- package/dist/cjs/utils/filter.d.ts.map +1 -1
- package/dist/cjs/utils/filter.js +6 -6
- package/dist/cjs/utils/report.d.ts +5 -5
- package/dist/cjs/utils/report.d.ts.map +1 -1
- package/dist/cjs/utils/schema.d.ts +6 -3
- package/dist/cjs/utils/schema.d.ts.map +1 -1
- package/dist/cjs/utils/schema.js +42 -3
- package/dist/cjs/utils/table.d.ts.map +1 -1
- package/dist/cjs/utils/tenants.d.ts.map +1 -1
- package/dist/cjs/utils/ui.d.ts.map +1 -1
- package/dist/esm/Admin.d.ts +14 -8
- package/dist/esm/Admin.d.ts.map +1 -1
- package/dist/esm/Admin.js +135 -26
- package/dist/esm/AdminProvider.d.ts +26 -5
- package/dist/esm/AdminProvider.d.ts.map +1 -1
- package/dist/esm/AdminProvider.js +177 -88
- package/dist/esm/api/ConnectionClient.d.ts +26 -12
- package/dist/esm/api/ConnectionClient.d.ts.map +1 -1
- package/dist/esm/api/ConnectionClient.js +196 -31
- package/dist/esm/assets/ArrowDownHeadIcon.d.ts.map +1 -1
- package/dist/esm/assets/XIcon.d.ts.map +1 -1
- package/dist/esm/components/CardSection.d.ts.map +1 -1
- package/dist/esm/components/CardSection.js +4 -2
- package/dist/esm/components/ClipboardButton.d.ts.map +1 -1
- package/dist/esm/components/DashboardSelectPopover.d.ts.map +1 -1
- package/dist/esm/components/DashboardSelectPopover.js +47 -8
- package/dist/esm/components/DatabaseSelector.d.ts +3 -1
- package/dist/esm/components/DatabaseSelector.d.ts.map +1 -1
- package/dist/esm/components/DatabaseSelector.js +3 -2
- package/dist/esm/components/DateRangePicker/SingleDatePicker.d.ts.map +1 -1
- package/dist/esm/components/DateRangePicker/SingleDatePicker.js +31 -7
- package/dist/esm/components/DateRangePicker/YearlessDateRangePicker.d.ts.map +1 -1
- package/dist/esm/components/DateRangePicker/YearlessDateRangePicker.js +31 -7
- package/dist/esm/components/DateRangePicker/dateRangePickerUtils.d.ts.map +1 -1
- package/dist/esm/components/DropDownMenuWithLabel.d.ts.map +1 -1
- package/dist/esm/components/DropDownMenuWithLabel.js +9 -2
- package/dist/esm/components/DynamicBanner.d.ts +3 -2
- package/dist/esm/components/DynamicBanner.d.ts.map +1 -1
- package/dist/esm/components/DynamicBanner.js +7 -2
- package/dist/esm/components/EmptyDashboardComponent/index.d.ts.map +1 -1
- package/dist/esm/components/EmptyDashboardComponent/index.js +3 -2
- package/dist/esm/components/EmptyVirtualTablesComponent.d.ts.map +1 -1
- package/dist/esm/components/EmptyVirtualTablesComponent.js +4 -1
- package/dist/esm/components/FormTooltip.d.ts.map +1 -1
- package/dist/esm/components/FormTooltip.js +4 -1
- package/dist/esm/components/InputLabel.d.ts.map +1 -1
- package/dist/esm/components/InputLabel.js +4 -2
- package/dist/esm/components/InternalDashboard/DashboardFilter.d.ts +1 -1
- package/dist/esm/components/InternalDashboard/DashboardFilter.d.ts.map +1 -1
- package/dist/esm/components/InternalDashboard/DashboardFilter.js +1 -1
- package/dist/esm/components/InternalDashboard/DashboardLoadingComponent.d.ts.map +1 -1
- package/dist/esm/components/InternalDashboard/DateRangePicker/QuillDateRangePicker.d.ts.map +1 -1
- package/dist/esm/components/InternalDashboard/DateRangePicker/QuillDateRangePicker.js +33 -11
- package/dist/esm/components/InternalDashboard/DateRangePicker/dateRangePickerUtils.d.ts.map +1 -1
- package/dist/esm/components/InternalDashboard/InternalDashboard.d.ts.map +1 -1
- package/dist/esm/components/InternalDashboard/InternalDashboard.js +129 -36
- package/dist/esm/components/OrgSelect.d.ts +0 -6
- package/dist/esm/components/OrgSelect.d.ts.map +1 -1
- package/dist/esm/components/OrgSelect.js +79 -45
- package/dist/esm/components/QuillMultiSelectWithCombo.d.ts +8 -2
- package/dist/esm/components/QuillMultiSelectWithCombo.d.ts.map +1 -1
- package/dist/esm/components/QuillMultiSelectWithCombo.js +351 -167
- package/dist/esm/components/QuillPopover.d.ts.map +1 -1
- package/dist/esm/components/QuillPopover.js +4 -5
- package/dist/esm/components/QuillSelect.js +9 -9
- package/dist/esm/components/QuillSelectWithCombo.d.ts +4 -3
- package/dist/esm/components/QuillSelectWithCombo.d.ts.map +1 -1
- package/dist/esm/components/QuillSelectWithCombo.js +47 -21
- package/dist/esm/components/QuillToolTipPortal.d.ts.map +1 -1
- package/dist/esm/components/SqlTextEditor.d.ts.map +1 -1
- package/dist/esm/components/SqlTextEditor.js +15 -2
- package/dist/esm/components/Tenants/EditTenant.d.ts.map +1 -1
- package/dist/esm/components/Tenants/EditTenant.js +51 -8
- package/dist/esm/components/UiComponents.d.ts +16 -43
- package/dist/esm/components/UiComponents.d.ts.map +1 -1
- package/dist/esm/components/UiComponents.js +127 -29
- package/dist/esm/forms/client_onboard/ConnectDatabase.d.ts.map +1 -1
- package/dist/esm/forms/client_onboard/ConnectDatabase.js +163 -51
- package/dist/esm/forms/client_onboard/ConnectSchema.d.ts.map +1 -1
- package/dist/esm/forms/client_onboard/ConnectSchema.js +36 -2
- package/dist/esm/forms/client_onboard/CreateVirtualTables.d.ts +2 -1
- package/dist/esm/forms/client_onboard/CreateVirtualTables.d.ts.map +1 -1
- package/dist/esm/forms/client_onboard/CreateVirtualTables.js +61 -23
- package/dist/esm/forms/client_onboard/__tests__/ConnectSchema.test.js +2 -1
- package/dist/esm/forms/client_onboard/__tests__/CreateVirtualTables.test.js +2 -1
- package/dist/esm/forms/virtual_tables/CreateEditVirtualTable.d.ts.map +1 -1
- package/dist/esm/forms/virtual_tables/CreateEditVirtualTable.js +103 -17
- package/dist/esm/hooks/useDatabaseSchema.d.ts.map +1 -1
- package/dist/esm/hooks/useDatabaseSchema.js +19 -3
- package/dist/esm/hooks/useLongLoading.d.ts +13 -0
- package/dist/esm/hooks/useLongLoading.d.ts.map +1 -0
- package/dist/esm/hooks/useLongLoading.js +64 -0
- package/dist/esm/hooks/useOnClickOutside.d.ts.map +1 -1
- package/dist/esm/hooks/useThrottle.d.ts.map +1 -1
- package/dist/esm/icons/ArrowDownHeadIcon.d.ts.map +1 -1
- package/dist/esm/icons/CheckCircleIcon.d.ts.map +1 -1
- package/dist/esm/icons/ExclamationFilledIcon.d.ts.map +1 -1
- package/dist/esm/icons/ExteriorLinkIcon.d.ts.map +1 -1
- package/dist/esm/icons/QuestionMarkCircleIcon.d.ts.map +1 -1
- package/dist/esm/modals/CodePreview.d.ts.map +1 -1
- package/dist/esm/modals/CodePreview.js +7 -2
- package/dist/esm/modals/CreateEnvironmentModal.d.ts +5 -0
- package/dist/esm/modals/CreateEnvironmentModal.d.ts.map +1 -0
- package/dist/esm/modals/CreateEnvironmentModal.js +15 -0
- package/dist/esm/modals/EditEnvironmentModal.d.ts.map +1 -1
- package/dist/esm/modals/EditEnvironmentModal.js +74 -17
- package/dist/esm/modals/EditFiltersModal.d.ts.map +1 -1
- package/dist/esm/modals/EditFiltersModal.js +21 -17
- package/dist/esm/modals/NewDashboardModal.d.ts.map +1 -1
- package/dist/esm/modals/NewDashboardModal.js +55 -29
- package/dist/esm/modals/PromoteReportModal.d.ts.map +1 -1
- package/dist/esm/modals/PromoteReportModal.js +15 -4
- package/dist/esm/modals/PromoteViewModal.d.ts.map +1 -1
- package/dist/esm/modals/PromoteViewModal.js +13 -2
- package/dist/esm/primitives/ButtonPrimitive.d.ts.map +1 -1
- package/dist/esm/primitives/ButtonPrimitive.js +10 -6
- package/dist/esm/primitives/CheckboxPrimitive.d.ts.map +1 -1
- package/dist/esm/primitives/CheckboxPrimitive.js +2 -0
- package/dist/esm/primitives/HeaderPrimitive.d.ts.map +1 -1
- package/dist/esm/primitives/HeaderPrimitive.js +11 -7
- package/dist/esm/primitives/PopoverPrimitive.d.ts.map +1 -1
- package/dist/esm/primitives/PopoverPrimitive.js +19 -6
- package/dist/esm/primitives/SecondaryButtonPrimitive.d.ts.map +1 -1
- package/dist/esm/primitives/SecondaryButtonPrimitive.js +5 -3
- package/dist/esm/primitives/TogglePrimitive.d.ts.map +1 -1
- package/dist/esm/public_components/ChartQueryBuilder.d.ts.map +1 -1
- package/dist/esm/public_components/ChartQueryBuilder.js +18 -8
- package/dist/esm/public_components/CreateEnvironment.d.ts.map +1 -1
- package/dist/esm/public_components/CreateEnvironment.js +68 -30
- package/dist/esm/public_components/DashboardManager.d.ts.map +1 -1
- package/dist/esm/public_components/DashboardManager.js +72 -5
- package/dist/esm/public_components/EnvSelectPopover.d.ts +2 -1
- package/dist/esm/public_components/EnvSelectPopover.d.ts.map +1 -1
- package/dist/esm/public_components/EnvSelectPopover.js +49 -9
- package/dist/esm/public_components/VirtualTableManager.d.ts.map +1 -1
- package/dist/esm/public_components/VirtualTableManager.js +125 -11
- package/dist/esm/public_components/__tests__/CreateEnvironment.test.js +41 -2
- package/dist/esm/utils/astProcessing.d.ts.map +1 -1
- package/dist/esm/utils/columnProcessing.d.ts +1 -0
- package/dist/esm/utils/columnProcessing.d.ts.map +1 -1
- package/dist/esm/utils/columnProcessing.js +7 -2
- package/dist/esm/utils/constants.d.ts +1 -0
- package/dist/esm/utils/constants.d.ts.map +1 -1
- package/dist/esm/utils/constants.js +4 -0
- package/dist/esm/utils/dataEditor.d.ts.map +1 -1
- package/dist/esm/utils/dataFetcher.d.ts.map +1 -1
- package/dist/esm/utils/dataFetcher.js +0 -1
- package/dist/esm/utils/databases.d.ts +6 -1
- package/dist/esm/utils/databases.d.ts.map +1 -1
- package/dist/esm/utils/databases.js +23 -5
- package/dist/esm/utils/delay.d.ts.map +1 -1
- package/dist/esm/utils/filter.d.ts +17 -21
- package/dist/esm/utils/filter.d.ts.map +1 -1
- package/dist/esm/utils/filter.js +5 -5
- package/dist/esm/utils/report.d.ts +5 -5
- package/dist/esm/utils/report.d.ts.map +1 -1
- package/dist/esm/utils/schema.d.ts +6 -3
- package/dist/esm/utils/schema.d.ts.map +1 -1
- package/dist/esm/utils/schema.js +42 -3
- package/dist/esm/utils/table.d.ts.map +1 -1
- package/dist/esm/utils/tenants.d.ts.map +1 -1
- package/dist/esm/utils/ui.d.ts.map +1 -1
- package/package.json +1 -1
|
@@ -4,7 +4,7 @@ import { useEffect, useMemo, useRef, useState } from 'react';
|
|
|
4
4
|
import { ButtonPrimitive, HeaderPrimitive, ModalPrimitive, SecondaryButtonPrimitive, TextInputPrimitive, } from '../primitives';
|
|
5
5
|
import { useAdmin } from '../AdminProvider';
|
|
6
6
|
import { EnvSelectPopover } from '../components';
|
|
7
|
-
import {
|
|
7
|
+
import { TableCell } from '../Admin';
|
|
8
8
|
import CreateEditVirtualTable from '../forms/virtual_tables/CreateEditVirtualTable';
|
|
9
9
|
import { addVirtualTable, editVirtualTable, deleteVirtualTable as requestDeleteVirtualTable, } from '../utils/dataEditor';
|
|
10
10
|
import { getVirtualTableData } from '../api/ConnectionClient';
|
|
@@ -23,6 +23,7 @@ import { onlySingleDatabaseTenant } from '../utils/tenants';
|
|
|
23
23
|
import { useDatabaseSchema } from '../hooks/useDatabaseSchema';
|
|
24
24
|
import InputLabel from '../components/InputLabel';
|
|
25
25
|
import { useDashboardManager } from '../hooks/useDashboardManager';
|
|
26
|
+
import CreateEnvironmentModal from '../modals/CreateEnvironmentModal';
|
|
26
27
|
export const getDuplicateColumns = (columns) => {
|
|
27
28
|
if (!columns) {
|
|
28
29
|
return [];
|
|
@@ -60,8 +61,10 @@ export default function VirtualTableManager({ containerStyle, virtualTable, }) {
|
|
|
60
61
|
const [initialVirtualTable, setInitialVirtualTable] = useState(undefined);
|
|
61
62
|
const [submittingVirtualTable, setSubmittingVirtualTable] = useState(false);
|
|
62
63
|
const [noCustomerField, setNoCustomerField] = useState(false);
|
|
64
|
+
const [showCreateEnvironmentModal, setShowCreateEnvironmentModal] = useState(false);
|
|
63
65
|
const parentRef = useRef(null);
|
|
64
|
-
const
|
|
66
|
+
const envHeaderRef = useRef(null);
|
|
67
|
+
const { state, dispatch, clientLoading, setClient, getToken, quillFetchWithToken, eventTracking, } = useAdmin();
|
|
65
68
|
const closeEditModal = () => {
|
|
66
69
|
setEditModalIsOpen(false);
|
|
67
70
|
setEditName('');
|
|
@@ -77,6 +80,16 @@ export default function VirtualTableManager({ containerStyle, virtualTable, }) {
|
|
|
77
80
|
setEditError(table.broken ? (table.error ?? 'Invalid query') : undefined);
|
|
78
81
|
setCustomFieldInfo(table.customFieldInfo);
|
|
79
82
|
!suppressModal && setEditModalIsOpen(true);
|
|
83
|
+
eventTracking?.addBreadcrumb?.({
|
|
84
|
+
message: 'Clicked table cell in VirtualTableManager',
|
|
85
|
+
data: {
|
|
86
|
+
table: table.name,
|
|
87
|
+
suppressModal: suppressModal,
|
|
88
|
+
},
|
|
89
|
+
category: 'interaction',
|
|
90
|
+
level: 'info',
|
|
91
|
+
timestamp: Date.now(),
|
|
92
|
+
});
|
|
80
93
|
};
|
|
81
94
|
const reloadTables = async (tables) => {
|
|
82
95
|
const tempClient = {
|
|
@@ -253,6 +266,17 @@ export default function VirtualTableManager({ containerStyle, virtualTable, }) {
|
|
|
253
266
|
setEditQueryView(false);
|
|
254
267
|
}
|
|
255
268
|
catch (e) {
|
|
269
|
+
eventTracking?.logError?.({
|
|
270
|
+
type: 'bug', // TODO: determine type
|
|
271
|
+
severity: 'high',
|
|
272
|
+
message: 'Error submitting virtual table',
|
|
273
|
+
errorMessage: e.message,
|
|
274
|
+
errorStack: e.stack,
|
|
275
|
+
errorData: {
|
|
276
|
+
caller: 'VirtualTableManager',
|
|
277
|
+
function: 'handleModalSubmit',
|
|
278
|
+
},
|
|
279
|
+
});
|
|
256
280
|
console.error(e);
|
|
257
281
|
}
|
|
258
282
|
};
|
|
@@ -280,6 +304,15 @@ export default function VirtualTableManager({ containerStyle, virtualTable, }) {
|
|
|
280
304
|
alert(`This table is referenced in the following dashboard filter${filtersIsPlural}.\n\n${referencedFilterInfo.join('\n')} \n\nPlease delete those filters before deleting this table.`);
|
|
281
305
|
return;
|
|
282
306
|
}
|
|
307
|
+
eventTracking?.addBreadcrumb?.({
|
|
308
|
+
message: 'Confirmed delete table in VirtualTableManager',
|
|
309
|
+
data: {
|
|
310
|
+
table: name,
|
|
311
|
+
},
|
|
312
|
+
category: 'interaction',
|
|
313
|
+
level: 'info',
|
|
314
|
+
timestamp: Date.now(),
|
|
315
|
+
});
|
|
283
316
|
const response = await requestDeleteVirtualTable(id, state, getToken);
|
|
284
317
|
await reloadTables();
|
|
285
318
|
return response;
|
|
@@ -294,13 +327,16 @@ export default function VirtualTableManager({ containerStyle, virtualTable, }) {
|
|
|
294
327
|
break;
|
|
295
328
|
}
|
|
296
329
|
};
|
|
330
|
+
if (showCreateEnvironmentModal) {
|
|
331
|
+
return (_jsx(CreateEnvironmentModal, { showCreateEnvironmentModal: showCreateEnvironmentModal, setShowCreateEnvironmentModal: setShowCreateEnvironmentModal }));
|
|
332
|
+
}
|
|
297
333
|
return (_jsx("div", { style: { ...containerStyle }, children: _jsxs("div", { style: {
|
|
298
334
|
minHeight: '100%',
|
|
299
335
|
display: 'flex',
|
|
300
336
|
flexDirection: 'column',
|
|
301
337
|
paddingTop: '0px',
|
|
302
338
|
position: 'relative',
|
|
303
|
-
}, ref: parentRef, children: [(state.databaseTypeMismatch.show || !editQueryView) && (_jsx("div", { style: {
|
|
339
|
+
}, ref: parentRef, children: [(state.databaseTypeMismatch.show || !editQueryView) && (_jsx("div", { ref: envHeaderRef, style: {
|
|
304
340
|
// width: 'calc(100vw - 30px)',
|
|
305
341
|
display: 'flex',
|
|
306
342
|
position: 'sticky',
|
|
@@ -334,11 +370,19 @@ export default function VirtualTableManager({ containerStyle, virtualTable, }) {
|
|
|
334
370
|
setClient(client, true);
|
|
335
371
|
}, onSelectedEditEnvironment: () => {
|
|
336
372
|
setEditEnvironmentModalIsOpen(true);
|
|
373
|
+
}, onCreateNewEnvironment: () => {
|
|
374
|
+
setShowCreateEnvironmentModal(true);
|
|
337
375
|
}, theme: state.theme, parentRef: parentRef, isLoading: clientLoading }) }), !editQueryView && !state.databaseTypeMismatch.show && (_jsxs("div", { style: {
|
|
338
376
|
display: 'flex',
|
|
339
377
|
flexDirection: 'row',
|
|
340
378
|
gap: 8,
|
|
341
379
|
}, children: [_jsx(SecondaryButtonPrimitive, { onClick: () => {
|
|
380
|
+
eventTracking?.addBreadcrumb?.({
|
|
381
|
+
message: 'Clicked refresh tables button in VirtualTableManager',
|
|
382
|
+
category: 'interaction',
|
|
383
|
+
level: 'info',
|
|
384
|
+
timestamp: Date.now(),
|
|
385
|
+
});
|
|
342
386
|
reloadTables(tables);
|
|
343
387
|
}, label: "Refresh Tables" }), _jsx(ButtonPrimitive, { onClick: () => {
|
|
344
388
|
setEditName('');
|
|
@@ -346,12 +390,19 @@ export default function VirtualTableManager({ containerStyle, virtualTable, }) {
|
|
|
346
390
|
setEditVirtualTableId('');
|
|
347
391
|
setInitialVirtualTable(undefined);
|
|
348
392
|
setEditQueryView(true);
|
|
393
|
+
eventTracking?.addBreadcrumb?.({
|
|
394
|
+
message: 'Clicked add virtual table button in VirtualTableManager',
|
|
395
|
+
category: 'interaction',
|
|
396
|
+
level: 'info',
|
|
397
|
+
timestamp: Date.now(),
|
|
398
|
+
});
|
|
349
399
|
}, label: "Add Virtual Table +" })] }))] }) })), clientLoading || areTablesLoading ? (_jsx("div", { style: {
|
|
350
400
|
display: 'grid',
|
|
351
401
|
gridGap: 24,
|
|
352
402
|
gridTemplateColumns: 'repeat(auto-fill,minmax(460px, 1fr))',
|
|
353
403
|
padding: 25,
|
|
354
404
|
width: '100%',
|
|
405
|
+
...containerStyle,
|
|
355
406
|
}, children: Array.from({ length: 12 }).map((_, i) => (_jsx("div", { style: {
|
|
356
407
|
height: '180px',
|
|
357
408
|
width: '540px',
|
|
@@ -363,14 +414,31 @@ export default function VirtualTableManager({ containerStyle, virtualTable, }) {
|
|
|
363
414
|
overflow: 'hidden',
|
|
364
415
|
}, children: _jsxs("svg", { width: "100%", height: "100%", xmlns: "http://www.w3.org/2000/svg", xmlnsXlink: "http://www.w3.org/1999/xlink", children: [_jsx("rect", { width: "100%", height: "100%", fill: '#F9F9FA' }), _jsx("defs", { fill: '#F9F9FA', children: _jsxs("linearGradient", { id: "skeletonGradient", x1: "0%", y1: "0%", x2: "10%", y2: "0%", gradientUnits: "userSpaceOnUse", children: [_jsx("stop", { offset: "0%", stopColor: "rgba(255,255,255,0)" }), _jsx("stop", { offset: "50%", stopColor: "#FEFEFE" }), _jsx("stop", { offset: "100%", stopColor: "rgba(255,255,255,0)" }), _jsx("animate", { attributeName: "x1", from: "-100%", to: "100%", dur: "2s", repeatCount: "indefinite" }), _jsx("animate", { attributeName: "x2", from: "-50%", to: "150%", dur: "2s", repeatCount: "indefinite" })] }) }), _jsx("rect", { width: "50%", height: "100%", fill: "url(#skeletonGradient)", children: _jsx("animate", { attributeName: "x", from: "-100%", to: "100%", dur: "2s", repeatCount: "indefinite" }) })] }) }) }, i))) }, 'edit-view-query')) : state.databaseTypeMismatch.show ? (_jsx(DatabaseMismatchCard, { environmentName: state.client.name, environmentDatabaseType: state.client.databaseType, backendDatabaseType: state.databaseTypeMismatch.backendDatabaseType })) : (_jsxs(_Fragment, { children: [!editQueryView ? (tables && tables.length === 0 ? (_jsx(EmptyVirtualTablesComponent, { onClick: () => {
|
|
365
416
|
setEditQueryView(true);
|
|
417
|
+
eventTracking?.addBreadcrumb?.({
|
|
418
|
+
message: 'Clicked EmptyVirtualTablesComponent in VirtualTableManager',
|
|
419
|
+
category: 'interaction',
|
|
420
|
+
level: 'info',
|
|
421
|
+
timestamp: Date.now(),
|
|
422
|
+
});
|
|
366
423
|
} })) : (_jsx("div", { style: {
|
|
367
424
|
display: 'grid',
|
|
368
425
|
gridGap: 24,
|
|
369
426
|
gridTemplateColumns: 'repeat(auto-fill,minmax(460px, 1fr))',
|
|
370
427
|
padding: 25,
|
|
428
|
+
height: '100%',
|
|
429
|
+
maxHeight: envHeaderRef.current
|
|
430
|
+
? `calc(100vh - ${envHeaderRef.current?.getBoundingClientRect().bottom ?? 0}px)`
|
|
431
|
+
: '100%',
|
|
432
|
+
overflow: 'scroll',
|
|
371
433
|
}, children: tables && tables?.length ? (_jsxs(_Fragment, { children: [tables.map((table) => (_jsx(TableCell, { table: table, clickTableCellHeader: clickTableCell, clickTableCellBody: () => {
|
|
372
434
|
clickTableCell(table, true);
|
|
373
435
|
setEditQueryView(true);
|
|
436
|
+
eventTracking?.addBreadcrumb?.({
|
|
437
|
+
message: 'Clicked table body in VirtualTableManager',
|
|
438
|
+
category: 'interaction',
|
|
439
|
+
level: 'info',
|
|
440
|
+
timestamp: Date.now(),
|
|
441
|
+
});
|
|
374
442
|
}, isLoading: loadingTables[table._id], reloadAction: (table) => reloadTables([table]), hoverActions: (table) => (_jsxs("div", { style: {
|
|
375
443
|
display: 'flex',
|
|
376
444
|
flexDirection: 'row',
|
|
@@ -386,8 +454,18 @@ export default function VirtualTableManager({ containerStyle, virtualTable, }) {
|
|
|
386
454
|
display: 'flex',
|
|
387
455
|
flexDirection: 'row',
|
|
388
456
|
alignItems: 'center',
|
|
457
|
+
border: `0 solid ${state.theme?.borderColor ?? '#e7e7e7'}`,
|
|
389
458
|
}, onClick: (event) => {
|
|
390
459
|
event.stopPropagation();
|
|
460
|
+
eventTracking?.addBreadcrumb?.({
|
|
461
|
+
message: 'Clicked edit query button in VirtualTableManager Table Cell',
|
|
462
|
+
data: {
|
|
463
|
+
table: table.name,
|
|
464
|
+
},
|
|
465
|
+
category: 'interaction',
|
|
466
|
+
level: 'info',
|
|
467
|
+
timestamp: Date.now(),
|
|
468
|
+
});
|
|
391
469
|
clickTableCell(table, true);
|
|
392
470
|
setEditQueryView(true);
|
|
393
471
|
}, className: "secondary-button-quill", children: [_jsx("style", { children: `.secondary-button-quill { background: white } .secondary-button-quill:hover { background: #F4F4F5 }` }), _jsx("svg", { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 24 24", fill: "currentColor", height: 12, width: 12, style: {
|
|
@@ -404,8 +482,18 @@ export default function VirtualTableManager({ containerStyle, virtualTable, }) {
|
|
|
404
482
|
display: 'flex',
|
|
405
483
|
flexDirection: 'row',
|
|
406
484
|
alignItems: 'center',
|
|
485
|
+
border: `0 solid ${state.theme?.borderColor ?? '#e7e7e7'}`,
|
|
407
486
|
}, onClick: (event) => {
|
|
408
487
|
event.stopPropagation();
|
|
488
|
+
eventTracking?.addBreadcrumb?.({
|
|
489
|
+
message: 'Clicked table settings in VirtualTableManager Table Cell',
|
|
490
|
+
data: {
|
|
491
|
+
table: table.name,
|
|
492
|
+
},
|
|
493
|
+
category: 'interaction',
|
|
494
|
+
level: 'info',
|
|
495
|
+
timestamp: Date.now(),
|
|
496
|
+
});
|
|
409
497
|
clickTableCell(table);
|
|
410
498
|
}, className: "secondary-button-quill", children: _jsx("svg", { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 24 24", fill: "currentColor", height: 16, width: 16, style: {
|
|
411
499
|
marginLeft: 'auto',
|
|
@@ -427,8 +515,18 @@ export default function VirtualTableManager({ containerStyle, virtualTable, }) {
|
|
|
427
515
|
display: 'flex',
|
|
428
516
|
flexDirection: 'row',
|
|
429
517
|
alignItems: 'center',
|
|
518
|
+
border: `0 solid ${state.theme?.borderColor ?? '#e7e7e7'}`,
|
|
430
519
|
}, className: "secondary-button-quill", onClick: (event) => {
|
|
431
520
|
event.stopPropagation();
|
|
521
|
+
eventTracking?.addBreadcrumb?.({
|
|
522
|
+
message: 'Clicked refresh table button in VirtualTableManager Table Cell',
|
|
523
|
+
data: {
|
|
524
|
+
table: table.name,
|
|
525
|
+
},
|
|
526
|
+
category: 'interaction',
|
|
527
|
+
level: 'info',
|
|
528
|
+
timestamp: Date.now(),
|
|
529
|
+
});
|
|
432
530
|
reloadTables([table]);
|
|
433
531
|
}, children: [_jsx("style", { children: `.secondary-button-quill { background: white } .secondary-button-quill:hover { background: #F4F4F5 }` }), _jsx("svg", { xmlns: "http://www.w3.org/2000/svg", fill: "currentColor", viewBox: "0 0 16 16", strokeWidth: 1.5, height: 16, width: 16, style: {
|
|
434
532
|
marginLeft: 'auto',
|
|
@@ -437,6 +535,7 @@ export default function VirtualTableManager({ containerStyle, virtualTable, }) {
|
|
|
437
535
|
height: 32,
|
|
438
536
|
width: 32,
|
|
439
537
|
color: state.theme?.secondaryTextColor,
|
|
538
|
+
border: `0 solid ${state.theme?.borderColor ?? '#e7e7e7'}`,
|
|
440
539
|
borderRadius: 6,
|
|
441
540
|
outline: 'none',
|
|
442
541
|
cursor: 'pointer',
|
|
@@ -446,6 +545,15 @@ export default function VirtualTableManager({ containerStyle, virtualTable, }) {
|
|
|
446
545
|
alignItems: 'center',
|
|
447
546
|
}, onClick: (event) => {
|
|
448
547
|
event.stopPropagation();
|
|
548
|
+
eventTracking?.addBreadcrumb?.({
|
|
549
|
+
message: 'Clicked delete table button in VirtualTableManager Table Cell',
|
|
550
|
+
data: {
|
|
551
|
+
table: table.name,
|
|
552
|
+
},
|
|
553
|
+
category: 'interaction',
|
|
554
|
+
level: 'info',
|
|
555
|
+
timestamp: Date.now(),
|
|
556
|
+
});
|
|
449
557
|
deleteVirtualTable(table._id, table.name, table.name);
|
|
450
558
|
}, className: "secondary-button-quill", children: [_jsx("style", { children: `.secondary-button-quill { background: white } .secondary-button-quill:hover { background: #F4F4F5 }` }), _jsx("svg", { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 20 20", fill: "currentColor", height: 14, width: 14, style: {
|
|
451
559
|
marginLeft: 'auto',
|
|
@@ -482,7 +590,7 @@ function EditAddViewModal({ viewName, viewQuery, viewOwnerTenantFields, viewId,
|
|
|
482
590
|
const [tableData, setTableData] = useState(undefined);
|
|
483
591
|
const [errorInfo, setErrorInfo] = useState({ show: false, message: '' });
|
|
484
592
|
const clientIsSingleTenant = useMemo(() => onlySingleDatabaseTenant(state.client), [state.client]);
|
|
485
|
-
const { getToken } = useAdmin();
|
|
593
|
+
const { getToken, eventTracking } = useAdmin();
|
|
486
594
|
useEffect(() => {
|
|
487
595
|
setCustomFieldQuery(customFieldInfo?.query || '');
|
|
488
596
|
setCustomFieldType(customFieldInfo?.type || 'eav');
|
|
@@ -518,7 +626,8 @@ function EditAddViewModal({ viewName, viewQuery, viewOwnerTenantFields, viewId,
|
|
|
518
626
|
marginTop: '0px',
|
|
519
627
|
marginBottom: '0px',
|
|
520
628
|
fontWeight: 'bold',
|
|
521
|
-
color:
|
|
629
|
+
color: state.theme?.primaryTextColor,
|
|
630
|
+
fontFamily: state.theme?.fontFamily,
|
|
522
631
|
}, children: viewName ? 'Edit Virtual Table' : 'Add Virtual Table' }), _jsx(MemoizedDeleteButton, { onClick: closeEditModal, style: undefined })] }), _jsx(InputLabel, { children: "Name" }), _jsx(TextInputPrimitive, { ref: (input) => editModalIsOpen && !viewName && input?.focus(), placeholder: "Enter view display name...", onChange: (e) => setName(e.target.value), value: name ? name : '' }), _jsx("br", {}), viewOwnerTenantFields.length > 0 && (_jsxs(_Fragment, { children: [_jsx(InputLabel, { tooltip: "Dashboards may only query from virtual tables that share an owner with them. Virtual tables are required to return each of their owners' foreign keys as part of the query.", children: "Owners" }), _jsx("div", { style: {
|
|
523
632
|
flexDirection: 'row',
|
|
524
633
|
display: 'flex',
|
|
@@ -530,7 +639,8 @@ function EditAddViewModal({ viewName, viewQuery, viewOwnerTenantFields, viewId,
|
|
|
530
639
|
.map((tenantField) => (_jsx("div", { style: {
|
|
531
640
|
fontWeight: 300,
|
|
532
641
|
fontSize: 12,
|
|
533
|
-
|
|
642
|
+
fontFamily: state.theme?.fontFamily,
|
|
643
|
+
color: state.theme?.primaryTextColor,
|
|
534
644
|
padding: 2,
|
|
535
645
|
paddingLeft: 4,
|
|
536
646
|
paddingRight: 4,
|
|
@@ -559,7 +669,8 @@ function EditAddViewModal({ viewName, viewQuery, viewOwnerTenantFields, viewId,
|
|
|
559
669
|
fontWeight: '600',
|
|
560
670
|
fontSize: '14px',
|
|
561
671
|
marginBottom: '6px',
|
|
562
|
-
color:
|
|
672
|
+
color: state.theme?.secondaryTextColor,
|
|
673
|
+
fontFamily: state.theme?.fontFamily,
|
|
563
674
|
}, children: "Custom fields" }), _jsx(TogglePrimitive, { value: useCustomField, onClick: () => {
|
|
564
675
|
setUseCustomField((useCustomField) => !useCustomField);
|
|
565
676
|
}, style: {
|
|
@@ -569,19 +680,22 @@ function EditAddViewModal({ viewName, viewQuery, viewOwnerTenantFields, viewId,
|
|
|
569
680
|
fontSize: '14px',
|
|
570
681
|
marginBottom: '6px',
|
|
571
682
|
marginTop: '20px',
|
|
572
|
-
color:
|
|
683
|
+
color: state.theme?.secondaryTextColor,
|
|
684
|
+
fontFamily: state.theme?.fontFamily,
|
|
573
685
|
}, children: "Custom field type" }), _jsx(SegmentedControl, { theme: state.theme, value: customFieldType?.toLowerCase(), onChange: (e) => {
|
|
574
686
|
setCustomFieldType(e);
|
|
575
687
|
}, left: { label: 'EAV', value: 'eav' }, right: { label: 'JSON', value: 'json' } }), _jsx("br", {}), _jsx("h3", { style: {
|
|
576
688
|
fontWeight: '600',
|
|
577
689
|
fontSize: '14px',
|
|
578
690
|
marginBottom: '6px',
|
|
579
|
-
color:
|
|
691
|
+
color: state.theme?.secondaryTextColor,
|
|
692
|
+
fontFamily: state.theme?.fontFamily,
|
|
580
693
|
}, children: "Custom field query" }), _jsx("h3", { style: {
|
|
581
694
|
fontWeight: '400',
|
|
582
695
|
fontSize: '14px',
|
|
583
696
|
marginBottom: '20px',
|
|
584
|
-
color:
|
|
697
|
+
color: state.theme?.secondaryTextColor,
|
|
698
|
+
fontFamily: state.theme?.fontFamily,
|
|
585
699
|
}, children: customFieldType === 'eav'
|
|
586
700
|
? `A table of custom fields. It must have these columns: ref_table, ref_id, ref_table_id_field, field, value, type${clientIsSingleTenant ? '' : `, ${state.client.customerFieldName.replaceAll('"', '')}`}.`
|
|
587
701
|
: `A table of custom fields. It must have these columns: ref_table, ref_column, field${clientIsSingleTenant ? '' : `, ${state.client.customerFieldName.replaceAll('"', '')}`}.` }), _jsx(SqlTextEditor, { value: customFieldQuery, setValue: (e) => {
|
|
@@ -598,7 +712,7 @@ function EditAddViewModal({ viewName, viewQuery, viewOwnerTenantFields, viewId,
|
|
|
598
712
|
}
|
|
599
713
|
setErrorInfo({ show: false, message: '' });
|
|
600
714
|
setRunQueryButtonLoading(true);
|
|
601
|
-
const getSqlResults = await getVirtualTableData(state.client._id, customFieldQuery, state.client.databaseType, state.queryEndpoint, getToken);
|
|
715
|
+
const getSqlResults = await getVirtualTableData(state.client._id, customFieldQuery, state.client.databaseType, state.queryEndpoint, getToken, eventTracking, state.queryHeaders);
|
|
602
716
|
if (!getSqlResults.success) {
|
|
603
717
|
setErrorInfo({
|
|
604
718
|
show: true,
|
|
@@ -7,6 +7,7 @@ import { useAdmin } from '../../AdminProvider';
|
|
|
7
7
|
import { quillFetch } from '../../utils/dataFetcher';
|
|
8
8
|
import dotenv from 'dotenv';
|
|
9
9
|
import path from 'path';
|
|
10
|
+
import { defaultTheme } from '../../Admin';
|
|
10
11
|
// Load environment variables from .env.local
|
|
11
12
|
dotenv.config({ path: path.resolve(__dirname, '../../../.env.local') });
|
|
12
13
|
// Mock necessary modules
|
|
@@ -228,6 +229,33 @@ const testDatabases = [
|
|
|
228
229
|
},
|
|
229
230
|
virtualTableQuery: 'SELECT amount, customer_id FROM `transactions`.`transactions`;',
|
|
230
231
|
},
|
|
232
|
+
{
|
|
233
|
+
databaseType: 'Databricks',
|
|
234
|
+
databaseLabel: 'Databricks',
|
|
235
|
+
databaseConnectionString: null,
|
|
236
|
+
databaseCredentials: {
|
|
237
|
+
host: process.env.TEST_DATABRICKS_HOST,
|
|
238
|
+
path: process.env.TEST_DATABRICKS_PATH,
|
|
239
|
+
token: process.env.TEST_DATABRICKS_TOKEN,
|
|
240
|
+
database: null,
|
|
241
|
+
user: null,
|
|
242
|
+
password: null,
|
|
243
|
+
port: null,
|
|
244
|
+
warehouse: null,
|
|
245
|
+
},
|
|
246
|
+
jsonString: null,
|
|
247
|
+
schemaName: 'default',
|
|
248
|
+
tenant: {
|
|
249
|
+
name: 'Test Tenant',
|
|
250
|
+
tenantField: 'customer_id',
|
|
251
|
+
tenantTable: 'default.customers',
|
|
252
|
+
idField: 'id',
|
|
253
|
+
nameField: 'name',
|
|
254
|
+
tagField: 'id',
|
|
255
|
+
defaultTenant: 'John Doe',
|
|
256
|
+
},
|
|
257
|
+
virtualTableQuery: 'SELECT * FROM default.transactions;',
|
|
258
|
+
},
|
|
231
259
|
];
|
|
232
260
|
describe('CreateEnvironment', () => {
|
|
233
261
|
const mockOnOnboardComplete = jest.fn();
|
|
@@ -242,7 +270,8 @@ describe('CreateEnvironment', () => {
|
|
|
242
270
|
// mockQuillFetch = jest.fn((args) => quillFetch(args));
|
|
243
271
|
mockState = {
|
|
244
272
|
queryEndpoint: 'http://localhost:8080/cloud',
|
|
245
|
-
|
|
273
|
+
clerkOrgId: 'test-domain',
|
|
274
|
+
theme: defaultTheme,
|
|
246
275
|
};
|
|
247
276
|
useAdmin.mockReturnValue({
|
|
248
277
|
state: mockState,
|
|
@@ -371,6 +400,16 @@ describe('CreateEnvironment', () => {
|
|
|
371
400
|
.querySelector('input'), { target: { value: database.databaseCredentials.warehouse } });
|
|
372
401
|
});
|
|
373
402
|
}
|
|
403
|
+
if (database.databaseCredentials?.path) {
|
|
404
|
+
await act(async () => {
|
|
405
|
+
fireEvent.change(screen.getByTestId('quill-input-path').querySelector('input'), { target: { value: database.databaseCredentials.path } });
|
|
406
|
+
});
|
|
407
|
+
}
|
|
408
|
+
if (database.databaseCredentials?.token) {
|
|
409
|
+
await act(async () => {
|
|
410
|
+
fireEvent.change(screen.getByTestId('quill-input-token').querySelector('input'), { target: { value: database.databaseCredentials.token } });
|
|
411
|
+
});
|
|
412
|
+
}
|
|
374
413
|
// Verify Connect button is enabled
|
|
375
414
|
expect(screen.getByTestId('quill-connect-button').querySelector('button')
|
|
376
415
|
.className).not.toContain('quill-button-disabled');
|
|
@@ -443,7 +482,7 @@ describe('CreateEnvironment', () => {
|
|
|
443
482
|
newClient = JSON.parse(element.getAttribute('data-new-client') || '{}');
|
|
444
483
|
// Verify database schema was set
|
|
445
484
|
expect(environmentDetails.databaseSchema).toBeInstanceOf(Array);
|
|
446
|
-
// Client should have databaseType, schemaNames (non empty array), and
|
|
485
|
+
// Client should have databaseType, schemaNames (non empty array), and clerkOrgId
|
|
447
486
|
expect(newClient.schemaNames).toBeInstanceOf(Array);
|
|
448
487
|
expect(newClient.schemaNames.length).toBeGreaterThan(0);
|
|
449
488
|
expect(newClient.databaseType).toBe(database.databaseType);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"astProcessing.d.ts","sourceRoot":"","sources":["../../../src/utils/astProcessing.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAC9C,OAAO,EAAE,mBAAmB,EAAE,MAAM,UAAU,CAAC;AAG/C,wBAAgB,kCAAkC,CAChD,qBAAqB,EAAE,MAAM,EAAE,EAC/B,SAAS,EAAE;IAAE,SAAS,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,EAAE,EACjD,MAAM,EAAE,GAAG,EACX,GAAG,EAAE,GAAG,OAqDT;AAED,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,GAAG,OAQxC;AAED,eAAO,MAAM,YAAY,
|
|
1
|
+
{"version":3,"file":"astProcessing.d.ts","sourceRoot":"","sources":["../../../src/utils/astProcessing.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAC9C,OAAO,EAAE,mBAAmB,EAAE,MAAM,UAAU,CAAC;AAG/C,wBAAgB,kCAAkC,CAChD,qBAAqB,EAAE,MAAM,EAAE,EAC/B,SAAS,EAAE;IAAE,SAAS,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,EAAE,EACjD,MAAM,EAAE,GAAG,EACX,GAAG,EAAE,GAAG,OAqDT;AAED,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,GAAG,OAQxC;AAED,eAAO,MAAM,YAAY,GACvB,QAAQ,WAAW,EACnB,QAAQ,mBAAmB,EAC3B,UAAU,MAAM,OAAO,CAAC,MAAM,CAAC,KAC9B,OAAO,CAAC;IAAE,GAAG,EAAE,GAAG,CAAA;CAAE,CAyBtB,CAAC;AAEF;;GAEG;AACH,wBAAgB,sBAAsB,CAAC,IAAI,EAAE,GAAG,GAAG,MAAM,GAAG,SAAS,CAYpE"}
|
|
@@ -7,6 +7,7 @@ export type ColumnInfo = {
|
|
|
7
7
|
isVisible: true;
|
|
8
8
|
};
|
|
9
9
|
export declare function convertFieldTypeToJSType(fieldType: string): string;
|
|
10
|
+
export declare function fieldTypeToDataTypeID(fieldType: string): number;
|
|
10
11
|
export declare function processColumnReference(column: string, databaseType: string): string;
|
|
11
12
|
export declare function convertColumnInfoToColumnInternal(columnInfo: ColumnInfo): ColumnInternal;
|
|
12
13
|
export declare function isStringType(fieldType: string): boolean;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"columnProcessing.d.ts","sourceRoot":"","sources":["../../../src/utils/columnProcessing.ts"],"names":[],"mappings":"AAAA,OAAO,EAAc,cAAc,EAAE,MAAM,SAAS,CAAC;AAErD,MAAM,MAAM,UAAU,GAAG;IACvB,GAAG,EAAE,MAAM,CAAC;IACZ,SAAS,EAAE,MAAM,CAAC;IAClB,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,IAAI,CAAC;CACjB,CAAC;AAEF,wBAAgB,wBAAwB,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,CAwDlE;
|
|
1
|
+
{"version":3,"file":"columnProcessing.d.ts","sourceRoot":"","sources":["../../../src/utils/columnProcessing.ts"],"names":[],"mappings":"AAAA,OAAO,EAAc,cAAc,EAAE,MAAM,SAAS,CAAC;AAErD,MAAM,MAAM,UAAU,GAAG;IACvB,GAAG,EAAE,MAAM,CAAC;IACZ,SAAS,EAAE,MAAM,CAAC;IAClB,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,IAAI,CAAC;CACjB,CAAC;AAEF,wBAAgB,wBAAwB,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,CAwDlE;AAED,wBAAgB,qBAAqB,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,CA0C/D;AA0BD,wBAAgB,sBAAsB,CAAC,MAAM,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,UA0B1E;AAED,wBAAgB,iCAAiC,CAC/C,UAAU,EAAE,UAAU,GACrB,cAAc,CAShB;AAED,wBAAgB,YAAY,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAYvD;AAED,wBAAgB,UAAU,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CASrD;AAED,wBAAgB,YAAY,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAyBvD"}
|
|
@@ -53,7 +53,7 @@ export function convertFieldTypeToJSType(fieldType) {
|
|
|
53
53
|
}
|
|
54
54
|
return jsType;
|
|
55
55
|
}
|
|
56
|
-
function fieldTypeToDataTypeID(fieldType) {
|
|
56
|
+
export function fieldTypeToDataTypeID(fieldType) {
|
|
57
57
|
switch (fieldType) {
|
|
58
58
|
case 'bool':
|
|
59
59
|
return 16;
|
|
@@ -135,7 +135,11 @@ export function processColumnReference(column, databaseType) {
|
|
|
135
135
|
return `[${column}]`;
|
|
136
136
|
}
|
|
137
137
|
const columnParts = column.split('.');
|
|
138
|
-
if (columnParts.length >
|
|
138
|
+
if (columnParts.length > 2) {
|
|
139
|
+
// databricks
|
|
140
|
+
return `\`${columnParts[0]}\`.\`${columnParts[1]}\`.\`${columnParts[2]}\``;
|
|
141
|
+
}
|
|
142
|
+
else if (columnParts.length > 1) {
|
|
139
143
|
return `\`${columnParts[0]}\`.\`${columnParts[1]}\``;
|
|
140
144
|
}
|
|
141
145
|
return `\`${column}\``;
|
|
@@ -196,5 +200,6 @@ export function isNumberType(fieldType) {
|
|
|
196
200
|
'uint32',
|
|
197
201
|
'uint16',
|
|
198
202
|
'uint8',
|
|
203
|
+
'long',
|
|
199
204
|
].includes(fieldType.toLowerCase());
|
|
200
205
|
}
|
|
@@ -6,4 +6,5 @@ export declare const SINGLE_TENANT = "QUILL_SINGLE_TENANT";
|
|
|
6
6
|
export declare const SAVED_QUERIES_DASHBOARD = "quill-saved-queries";
|
|
7
7
|
export declare const QUILL_SERVER: string;
|
|
8
8
|
export declare const QUILL_QUERY_ENDPOINT: string;
|
|
9
|
+
export declare const QUILL_ENDPOINTS: string[];
|
|
9
10
|
//# sourceMappingURL=constants.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../../src/utils/constants.ts"],"names":[],"mappings":"AAAA;;GAEG;AAWH,eAAO,MAAM,WAAW,sBAAsB,CAAC;AAC/C,eAAO,MAAM,aAAa,wBAAwB,CAAC;AACnD,eAAO,MAAM,uBAAuB,wBAAwB,CAAC;AAE7D,eAAO,MAAM,YAAY,QAGoB,CAAC;AAC9C,eAAO,MAAM,oBAAoB,QAGnB,CAAC"}
|
|
1
|
+
{"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../../src/utils/constants.ts"],"names":[],"mappings":"AAAA;;GAEG;AAWH,eAAO,MAAM,WAAW,sBAAsB,CAAC;AAC/C,eAAO,MAAM,aAAa,wBAAwB,CAAC;AACnD,eAAO,MAAM,uBAAuB,wBAAwB,CAAC;AAE7D,eAAO,MAAM,YAAY,QAGoB,CAAC;AAC9C,eAAO,MAAM,oBAAoB,QAGnB,CAAC;AAEf,eAAO,MAAM,eAAe,UAG3B,CAAC"}
|
|
@@ -19,3 +19,7 @@ export const QUILL_SERVER = typeof process !== 'undefined' && process.env
|
|
|
19
19
|
export const QUILL_QUERY_ENDPOINT = typeof process !== 'undefined' && process.env
|
|
20
20
|
? (process.env.QUILL_QUERY_ENDPOINT ?? '/cloud')
|
|
21
21
|
: '/cloud';
|
|
22
|
+
export const QUILL_ENDPOINTS = [
|
|
23
|
+
'https://quill-344421.uc.r.appspot.com/cloud',
|
|
24
|
+
'https://quill-ruby-server.onrender.com/cloud',
|
|
25
|
+
];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dataEditor.d.ts","sourceRoot":"","sources":["../../../src/utils/dataEditor.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,kBAAkB,CAAC;AAGzC,eAAO,MAAM,gBAAgB,
|
|
1
|
+
{"version":3,"file":"dataEditor.d.ts","sourceRoot":"","sources":["../../../src/utils/dataEditor.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,kBAAkB,CAAC;AAGzC,eAAO,MAAM,gBAAgB,GAC3B,UAAU,MAAM,EAChB,eAAe,MAAM,EACrB,YAAY,MAAM,EAClB,iBAAiB,GAAG,EACpB,OAAO,KAAK,EACZ,mBAAmB,MAAM,EAAE,EAC3B,UAAU,MAAM,OAAO,CAAC,MAAM,CAAC,EAC/B,kBAAkB,OAAO,8DAqC1B,CAAC;AAEF,eAAO,MAAM,eAAe,GAC1B,MAAM,MAAM,EACZ,eAAe,MAAM,EACrB,iBAAiB,GAAG,EACpB,OAAO,KAAK,EACZ,mBAAmB,MAAM,EAAE,EAC3B,UAAU,MAAM,OAAO,CAAC,MAAM,CAAC,EAC/B,kBAAkB,OAAO,8DAgC1B,CAAC;AAEF,eAAO,MAAM,kBAAkB,GAC7B,IAAI,MAAM,EACV,OAAO,KAAK,EACZ,UAAU,MAAM,OAAO,CAAC,MAAM,CAAC,kDAoBhC,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dataFetcher.d.ts","sourceRoot":"","sources":["../../../src/utils/dataFetcher.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,MAAM,UAAU,CAAC;AAG/C,MAAM,WAAW,iBAAiB;IAChC,MAAM,EAAE,IAAI,CACV,mBAAmB,EACnB,UAAU,GAAG,eAAe,GAAG,cAAc,GAAG,iBAAiB,CAClE,CAAC;IACF,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,GAAG,CAAC;IACd,WAAW,CAAC,EAAE,WAAW,CAAC;IAC1B,WAAW,CAAC,EAAE,kBAAkB,CAAC;IACjC,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,QAAQ,EAAE,MAAM,OAAO,CAAC,MAAM,CAAC,CAAC;IAChC,SAAS,CAAC,EAAE,OAAO,CAAC;CACrB;AAED,MAAM,WAAW,YAAY;IAC3B,IAAI,CAAC,EAAE,GAAG,CAAC;IACX,OAAO,CAAC,EAAE,GAAG,CAAC;IACd,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,eAAO,MAAM,UAAU,
|
|
1
|
+
{"version":3,"file":"dataFetcher.d.ts","sourceRoot":"","sources":["../../../src/utils/dataFetcher.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,MAAM,UAAU,CAAC;AAG/C,MAAM,WAAW,iBAAiB;IAChC,MAAM,EAAE,IAAI,CACV,mBAAmB,EACnB,UAAU,GAAG,eAAe,GAAG,cAAc,GAAG,iBAAiB,CAClE,CAAC;IACF,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,GAAG,CAAC;IACd,WAAW,CAAC,EAAE,WAAW,CAAC;IAC1B,WAAW,CAAC,EAAE,kBAAkB,CAAC;IACjC,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,QAAQ,EAAE,MAAM,OAAO,CAAC,MAAM,CAAC,CAAC;IAChC,SAAS,CAAC,EAAE,OAAO,CAAC;CACrB;AAED,MAAM,WAAW,YAAY;IAC3B,IAAI,CAAC,EAAE,GAAG,CAAC;IACX,OAAO,CAAC,EAAE,GAAG,CAAC;IACd,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,eAAO,MAAM,UAAU,GAAU,wFAS9B,iBAAiB,KAAG,OAAO,CAAC,YAAY,CAuD1C,CAAC"}
|
|
@@ -12,7 +12,6 @@ export const quillFetch = async ({ client, task, method = 'POST', metadata, abor
|
|
|
12
12
|
...(token ? { Authorization: `Bearer ${token}` } : {}),
|
|
13
13
|
...client.queryHeaders,
|
|
14
14
|
'Content-Type': 'application/json',
|
|
15
|
-
'Vercel-Env': process.env.NEXT_PUBLIC_VERCEL_ENV ?? 'production',
|
|
16
15
|
},
|
|
17
16
|
body: JSON.stringify({
|
|
18
17
|
metadata: {
|
|
@@ -44,7 +44,12 @@ export interface SnowflakeConnection extends DatabaseConnection {
|
|
|
44
44
|
export interface BigQueryConnection extends DatabaseConnection {
|
|
45
45
|
jsonString: string;
|
|
46
46
|
}
|
|
47
|
-
export
|
|
47
|
+
export interface DatabricksConnection extends DatabaseConnection {
|
|
48
|
+
host: string;
|
|
49
|
+
path: string;
|
|
50
|
+
token: string;
|
|
51
|
+
}
|
|
52
|
+
export type ConnectionType = DatabaseConnection | PostgresConnection | MySQLConnection | SnowflakeConnection | BigQueryConnection | ClickHouseConnection | SQLServerConnection | DatabricksConnection;
|
|
48
53
|
export interface DatabaseDefaultInfo {
|
|
49
54
|
label: string;
|
|
50
55
|
value: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"databases.d.ts","sourceRoot":"","sources":["../../../src/utils/databases.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,kBAAkB;IACjC,IAAI,EAAE,MAAM,CAAC;IACb,gBAAgB,EAAE,MAAM,CAAC;CAC1B;AAED,MAAM,WAAW,eAAe;IAC9B,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,kBAAmB,SAAQ,kBAAkB;IAC5D,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,MAAM,CAAC;IACb,YAAY,EAAE,MAAM,CAAC;IACrB,IAAI,EAAE,MAAM,CAAC;CACd;AAED,MAAM,WAAW,oBAAqB,SAAQ,kBAAkB;IAC9D,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;CACd;AAED,MAAM,WAAW,eAAgB,SAAQ,kBAAkB;IACzD,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,MAAM,CAAC;IACb,YAAY,EAAE,MAAM,CAAC;IACrB,IAAI,EAAE,MAAM,CAAC;CACd;AAED,MAAM,WAAW,mBAAoB,SAAQ,kBAAkB;IAC7D,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,MAAM,CAAC;IACb,YAAY,EAAE,MAAM,CAAC;IACrB,IAAI,EAAE,MAAM,CAAC;CACd;AAED,MAAM,WAAW,mBAAoB,SAAQ,kBAAkB;IAC7D,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,MAAM,CAAC;IACb,YAAY,EAAE,MAAM,CAAC;IACrB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,kBAAmB,SAAQ,kBAAkB;IAC5D,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,MAAM,cAAc,GACtB,kBAAkB,GAClB,kBAAkB,GAClB,eAAe,GACf,mBAAmB,GACnB,kBAAkB,GAClB,oBAAoB,GACpB,mBAAmB,CAAC;
|
|
1
|
+
{"version":3,"file":"databases.d.ts","sourceRoot":"","sources":["../../../src/utils/databases.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,kBAAkB;IACjC,IAAI,EAAE,MAAM,CAAC;IACb,gBAAgB,EAAE,MAAM,CAAC;CAC1B;AAED,MAAM,WAAW,eAAe;IAC9B,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,kBAAmB,SAAQ,kBAAkB;IAC5D,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,MAAM,CAAC;IACb,YAAY,EAAE,MAAM,CAAC;IACrB,IAAI,EAAE,MAAM,CAAC;CACd;AAED,MAAM,WAAW,oBAAqB,SAAQ,kBAAkB;IAC9D,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;CACd;AAED,MAAM,WAAW,eAAgB,SAAQ,kBAAkB;IACzD,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,MAAM,CAAC;IACb,YAAY,EAAE,MAAM,CAAC;IACrB,IAAI,EAAE,MAAM,CAAC;CACd;AAED,MAAM,WAAW,mBAAoB,SAAQ,kBAAkB;IAC7D,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,MAAM,CAAC;IACb,YAAY,EAAE,MAAM,CAAC;IACrB,IAAI,EAAE,MAAM,CAAC;CACd;AAED,MAAM,WAAW,mBAAoB,SAAQ,kBAAkB;IAC7D,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,MAAM,CAAC;IACb,YAAY,EAAE,MAAM,CAAC;IACrB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,kBAAmB,SAAQ,kBAAkB;IAC5D,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,oBAAqB,SAAQ,kBAAkB;IAC9D,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;CACf;AAED,MAAM,MAAM,cAAc,GACtB,kBAAkB,GAClB,kBAAkB,GAClB,eAAe,GACf,mBAAmB,GACnB,kBAAkB,GAClB,oBAAoB,GACpB,mBAAmB,GACnB,oBAAoB,CAAC;AAEzB,MAAM,WAAW,mBAAmB;IAClC,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,eAAO,MAAM,qBAAqB,EAAE,mBAAmB,EA0CtD,CAAC;AAEF,wBAAgB,2BAA2B,CACzC,YAAY,EAAE,MAAM,GACnB,cAAc,CAkEhB;AAED,wBAAgB,oBAAoB,CAAC,UAAU,CAAC,EAAE,kBAAkB,UAmDnE"}
|
|
@@ -29,9 +29,14 @@ export const DATABASE_DEFAULT_INFO = [
|
|
|
29
29
|
value: 'BigQuery',
|
|
30
30
|
imageUrl: 'https://www.gstatic.com/bricks/image/702bc723dcfcddf8942bb459be20163106a5f64ed91404df38c73ca955f96260.svg',
|
|
31
31
|
},
|
|
32
|
+
{
|
|
33
|
+
label: 'Databricks',
|
|
34
|
+
value: 'Databricks',
|
|
35
|
+
imageUrl: 'https://cdn.bfldr.com/9AYANS2F/at/k8bgnnxhb4bggjk88r4x9snf/databricks-symbol-color.svg?auto=webp&format=png',
|
|
36
|
+
},
|
|
32
37
|
];
|
|
33
38
|
export function getDatabaseConnectionFormat(databaseName) {
|
|
34
|
-
if (databaseName === '
|
|
39
|
+
if (databaseName.toLowerCase() === 'mysql') {
|
|
35
40
|
return {
|
|
36
41
|
user: '',
|
|
37
42
|
password: '',
|
|
@@ -42,7 +47,7 @@ export function getDatabaseConnectionFormat(databaseName) {
|
|
|
42
47
|
connectionString: '',
|
|
43
48
|
};
|
|
44
49
|
}
|
|
45
|
-
else if (databaseName === '
|
|
50
|
+
else if (databaseName.toLowerCase() === 'snowflake') {
|
|
46
51
|
return {
|
|
47
52
|
user: '',
|
|
48
53
|
password: '',
|
|
@@ -53,14 +58,14 @@ export function getDatabaseConnectionFormat(databaseName) {
|
|
|
53
58
|
connectionString: '',
|
|
54
59
|
};
|
|
55
60
|
}
|
|
56
|
-
else if (databaseName === '
|
|
61
|
+
else if (databaseName.toLowerCase() === 'bigquery') {
|
|
57
62
|
return {
|
|
58
63
|
type: 'BigQuery',
|
|
59
64
|
connectionString: '',
|
|
60
65
|
jsonString: '',
|
|
61
66
|
};
|
|
62
67
|
}
|
|
63
|
-
else if (databaseName === '
|
|
68
|
+
else if (databaseName.toLowerCase() === 'clickhouse') {
|
|
64
69
|
return {
|
|
65
70
|
user: '',
|
|
66
71
|
password: '',
|
|
@@ -70,7 +75,7 @@ export function getDatabaseConnectionFormat(databaseName) {
|
|
|
70
75
|
connectionString: '',
|
|
71
76
|
};
|
|
72
77
|
}
|
|
73
|
-
else if (databaseName === '
|
|
78
|
+
else if (databaseName.toLowerCase() === 'mssql') {
|
|
74
79
|
return {
|
|
75
80
|
user: '',
|
|
76
81
|
password: '',
|
|
@@ -81,6 +86,15 @@ export function getDatabaseConnectionFormat(databaseName) {
|
|
|
81
86
|
connectionString: '',
|
|
82
87
|
};
|
|
83
88
|
}
|
|
89
|
+
else if (databaseName.toLowerCase() === 'databricks') {
|
|
90
|
+
return {
|
|
91
|
+
host: '',
|
|
92
|
+
path: '',
|
|
93
|
+
token: '',
|
|
94
|
+
type: 'Databricks',
|
|
95
|
+
connectionString: '',
|
|
96
|
+
};
|
|
97
|
+
}
|
|
84
98
|
else {
|
|
85
99
|
// Postgres by default
|
|
86
100
|
return {
|
|
@@ -128,5 +142,9 @@ export function formConnectionString(connection) {
|
|
|
128
142
|
const typedConnection = connection;
|
|
129
143
|
return `mssql://${typedConnection.user}:${typedConnection.password}@${typedConnection.host}:${typedConnection.port}/${typedConnection.databaseName}`.replaceAll(' ', '');
|
|
130
144
|
}
|
|
145
|
+
else if (connection.type === 'Databricks') {
|
|
146
|
+
const typedConnection = connection;
|
|
147
|
+
return `databricks://databricks:${typedConnection.token}@${typedConnection.host}/${typedConnection.path.replace(/^\//, '')}`.replaceAll(' ', '');
|
|
148
|
+
}
|
|
131
149
|
return '';
|
|
132
150
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"delay.d.ts","sourceRoot":"","sources":["../../../src/utils/delay.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,KAAK,
|
|
1
|
+
{"version":3,"file":"delay.d.ts","sourceRoot":"","sources":["../../../src/utils/delay.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,KAAK,GAAI,IAAI,MAAM,qBAE/B,CAAC"}
|