windmill-components 1.269.4 → 1.291.4
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/package/ata/apis.d.ts +8 -5
- package/package/ata/apis.js +20 -9
- package/package/ata/edgeCases.js +5 -1
- package/package/ata/index.d.ts +3 -3
- package/package/ata/index.js +51 -28
- package/package/common.d.ts +1 -0
- package/package/components/AddUser.svelte +15 -6
- package/package/components/ApiConnectForm.svelte +1 -1
- package/package/components/ArgEnum.svelte +1 -1
- package/package/components/ArgEnum.svelte.d.ts +1 -1
- package/package/components/ArgInfo.svelte +2 -1
- package/package/components/ArgInput.svelte +7 -6
- package/package/components/ArgInput.svelte.d.ts +1 -1
- package/package/components/ArrayTypeNarrowing.svelte +2 -0
- package/package/components/CenteredModal.svelte +5 -2
- package/package/components/ChangeInstanceUsername.svelte +123 -0
- package/package/components/ChangeInstanceUsername.svelte.d.ts +20 -0
- package/package/components/ContentSearch.svelte +3 -4
- package/package/components/ContentSearch.svelte.d.ts +0 -3
- package/package/components/DateTimeInput.svelte +73 -9
- package/package/components/DateTimeInput.svelte.d.ts +8 -1
- package/package/components/DefaultScripts.svelte +26 -0
- package/package/components/DefaultScripts.svelte.d.ts +14 -0
- package/package/components/DefaultScriptsInner.svelte +75 -0
- package/package/components/DefaultScriptsInner.svelte.d.ts +14 -0
- package/package/components/Dev.svelte +59 -17
- package/package/components/DisplayResult.svelte +73 -67
- package/package/components/DurationMs.svelte +9 -8
- package/package/components/DurationMs.svelte.d.ts +1 -0
- package/package/components/Editor.svelte +23 -7
- package/package/components/FieldHeader.svelte +7 -7
- package/package/components/FlowBuilder.svelte +24 -13
- package/package/components/FlowBuilder.svelte.d.ts +0 -3
- package/package/components/FlowLoopIterationPreview.svelte +6 -5
- package/package/components/FlowMetadata.svelte +6 -2
- package/package/components/FlowPreviewContent.svelte +5 -5
- package/package/components/FolderEditor.svelte +20 -39
- package/package/components/GroupEditor.svelte +1 -1
- package/package/components/HighlightCode.svelte +7 -5
- package/package/components/IconedResourceType.svelte +5 -3
- package/package/components/IconedResourceType.svelte.d.ts +21 -7
- package/package/components/InputTransformForm.svelte +6 -1
- package/package/components/InstanceSettings.svelte +29 -17
- package/package/components/InstanceSettings.svelte.d.ts +3 -0
- package/package/components/InviteGlobalUser.svelte +1 -1
- package/package/components/JobArgs.svelte +20 -7
- package/package/components/JobStatus.svelte +8 -2
- package/package/components/LightweightArgInput.svelte +30 -14
- package/package/components/LightweightSchemaForm.svelte +1 -0
- package/package/components/LogViewer.svelte +21 -6
- package/package/components/ModulePreview.svelte +19 -11
- package/package/components/ModulePreview.svelte.d.ts +3 -2
- package/package/components/ObjectResourceInput.svelte +2 -0
- package/package/components/ObjectResourceInput.svelte.d.ts +1 -0
- package/package/components/Password.svelte +5 -2
- package/package/components/Password.svelte.d.ts +1 -0
- package/package/components/Path.svelte +10 -11
- package/package/components/ResourcePicker.svelte +28 -9
- package/package/components/ResourcePicker.svelte.d.ts +1 -0
- package/package/components/RunChart.svelte +1 -0
- package/package/components/RunForm.svelte +9 -17
- package/package/components/RunFormAdvancedPopup.svelte +11 -12
- package/package/components/S3FilePicker.svelte +1 -0
- package/package/components/ScheduleEditorInner.svelte +10 -9
- package/package/components/ScheduleEditorInner.svelte.d.ts +2 -2
- package/package/components/SchemaEditor.svelte +12 -1
- package/package/components/SchemaForm.svelte +1 -2
- package/package/components/SchemaModal.svelte +2 -2
- package/package/components/ScriptBuilder.svelte +152 -79
- package/package/components/ScriptBuilder.svelte.d.ts +1 -1
- package/package/components/ScriptEditor.svelte +8 -9
- package/package/components/ScriptSchedules.svelte +99 -0
- package/package/components/ScriptSchedules.svelte.d.ts +20 -0
- package/package/components/ShareModal.svelte +1 -0
- package/package/components/StringTypeNarrowing.svelte +9 -3
- package/package/components/SuperadminSettings.svelte +114 -10
- package/package/components/TestJobLoader.svelte +8 -0
- package/package/components/TestJobLoader.svelte.d.ts +1 -0
- package/package/components/TimeAgo.svelte +2 -2
- package/package/components/TimelineBar.svelte +5 -2
- package/package/components/Toggle.svelte +5 -2
- package/package/components/Toggle.svelte.d.ts +1 -0
- package/package/components/Tooltip.svelte +13 -2
- package/package/components/Tooltip.svelte.d.ts +1 -0
- package/package/components/Uptodate.svelte +12 -6
- package/package/components/UserSettings.svelte +87 -73
- package/package/components/WorkerTagPicker.svelte +4 -2
- package/package/components/WorkflowTimeline.svelte +106 -0
- package/package/components/WorkflowTimeline.svelte.d.ts +18 -0
- package/package/components/WorkspaceGroup.svelte +1 -0
- package/package/components/apps/components/buttons/AppButton.svelte +9 -19
- package/package/components/apps/components/display/AppCustomComponent.svelte +2 -4
- package/package/components/apps/components/display/dbtable/AppDbExplorer.svelte +246 -94
- package/package/components/apps/components/display/dbtable/AppDbExplorer.svelte.d.ts +0 -3
- package/package/components/apps/components/display/dbtable/DbExplorerCount.svelte +17 -5
- package/package/components/apps/components/display/dbtable/DbExplorerCount.svelte.d.ts +6 -2
- package/package/components/apps/components/display/dbtable/DeleteRow.svelte +6 -4
- package/package/components/apps/components/display/dbtable/DeleteRow.svelte.d.ts +3 -3
- package/package/components/apps/components/display/dbtable/InsertRow.svelte +55 -37
- package/package/components/apps/components/display/dbtable/InsertRow.svelte.d.ts +17 -1
- package/package/components/apps/components/display/dbtable/InsertRowRunnable.svelte +4 -3
- package/package/components/apps/components/display/dbtable/InsertRowRunnable.svelte.d.ts +2 -2
- package/package/components/apps/components/display/dbtable/UpdateCell.svelte +5 -4
- package/package/components/apps/components/display/dbtable/UpdateCell.svelte.d.ts +3 -3
- package/package/components/apps/components/display/dbtable/queries/count.d.ts +4 -0
- package/package/components/apps/components/display/dbtable/queries/count.js +140 -0
- package/package/components/apps/components/display/dbtable/queries/delete.d.ts +3 -0
- package/package/components/apps/components/display/dbtable/queries/delete.js +68 -0
- package/package/components/apps/components/display/dbtable/queries/insert.d.ts +5 -0
- package/package/components/apps/components/display/dbtable/queries/insert.js +121 -0
- package/package/components/apps/components/display/dbtable/queries/select.d.ts +7 -0
- package/package/components/apps/components/display/dbtable/queries/select.js +196 -0
- package/package/components/apps/components/display/dbtable/queries/update.d.ts +3 -0
- package/package/components/apps/components/display/dbtable/queries/update.js +75 -0
- package/package/components/apps/components/display/dbtable/utils.d.ts +79 -0
- package/package/components/apps/components/display/dbtable/utils.js +284 -309
- package/package/components/apps/components/display/table/AppAggridExplorerTable.svelte +39 -19
- package/package/components/apps/components/display/table/AppAggridExplorerTable.svelte.d.ts +0 -2
- package/package/components/apps/components/display/table/AppAggridTable.svelte +4 -1
- package/package/components/apps/components/display/table/AppTable.svelte +4 -0
- package/package/components/apps/components/display/table/AppTable.svelte.d.ts +2 -2
- package/package/components/apps/components/display/table/utils.js +42 -0
- package/package/components/apps/components/helpers/InputValue.svelte +10 -8
- package/package/components/apps/components/helpers/InputValue.svelte.d.ts +1 -0
- package/package/components/apps/components/helpers/RefreshButton.svelte +1 -1
- package/package/components/apps/components/helpers/ResolveConfig.svelte +2 -0
- package/package/components/apps/components/helpers/RunnableComponent.svelte +6 -2
- package/package/components/apps/components/helpers/eval.d.ts +2 -2
- package/package/components/apps/components/helpers/eval.js +33 -11
- package/package/components/apps/components/inputs/AppCheckbox.svelte +4 -0
- package/package/components/apps/components/inputs/AppCheckbox.svelte.d.ts +1 -0
- package/package/components/apps/components/inputs/AppDateInput.svelte +2 -2
- package/package/components/apps/components/inputs/AppDateTimeInput.svelte +121 -0
- package/package/components/apps/components/inputs/AppDateTimeInput.svelte.d.ts +22 -0
- package/package/components/apps/components/inputs/AppSelect.svelte +5 -0
- package/package/components/apps/components/inputs/AppSelect.svelte.d.ts +1 -0
- package/package/components/apps/components/inputs/AppTimeInput.svelte +103 -0
- package/package/components/apps/components/inputs/AppTimeInput.svelte.d.ts +21 -0
- package/package/components/apps/components/layout/AppConditionalWrapper.svelte +0 -1
- package/package/components/apps/components/layout/AppDecisionTree.svelte +12 -0
- package/package/components/apps/components/layout/AppStepper.svelte +4 -2
- package/package/components/apps/editor/AppEditor.svelte +19 -4
- package/package/components/apps/editor/AppEditorHeader.svelte +42 -14
- package/package/components/apps/editor/AppEditorHeader.svelte.d.ts +2 -0
- package/package/components/apps/editor/AppTimeline.svelte +4 -4
- package/package/components/apps/editor/DecisionTreeDebug.svelte +1 -1
- package/package/components/apps/editor/DeploymentHistory.svelte +1 -1
- package/package/components/apps/editor/GridEditorMenu.svelte +3 -3
- package/package/components/apps/editor/RecomputeAllComponents.svelte +1 -1
- package/package/components/apps/editor/SettingsPanel.svelte +2 -0
- package/package/components/apps/editor/TabsDebug.svelte +2 -2
- package/package/components/apps/editor/appUtils.js +8 -0
- package/package/components/apps/editor/component/Component.svelte +21 -0
- package/package/components/apps/editor/component/components.d.ts +168 -9
- package/package/components/apps/editor/component/components.js +203 -10
- package/package/components/apps/editor/component/sets.js +2 -0
- package/package/components/apps/editor/componentsPanel/ComponentList.svelte +3 -3
- package/package/components/apps/editor/componentsPanel/ThemeList.svelte +1 -0
- package/package/components/apps/editor/componentsPanel/ThemeList.svelte.d.ts +2 -0
- package/package/components/apps/editor/componentsPanel/ThemeRow.svelte +8 -4
- package/package/components/apps/editor/componentsPanel/componentControlUtils.js +2 -0
- package/package/components/apps/editor/componentsPanel/quickStyleProperties.js +6 -0
- package/package/components/apps/editor/contextPanel/DebugPanel.svelte +178 -0
- package/package/components/apps/editor/contextPanel/DebugPanel.svelte.d.ts +14 -0
- package/package/components/apps/editor/inlineScriptsPanel/CacheTtlPopup.svelte +3 -1
- package/package/components/apps/editor/inlineScriptsPanel/EmptyInlineScript.svelte +9 -18
- package/package/components/apps/editor/inlineScriptsPanel/InlineScriptEditor.svelte +11 -16
- package/package/components/apps/editor/inlineScriptsPanel/InlineScriptEditorPanel.svelte +2 -2
- package/package/components/apps/editor/inlineScriptsPanel/InlineScriptHiddenRunnable.svelte +2 -2
- package/package/components/apps/editor/inlineScriptsPanel/RunButton.svelte +4 -12
- package/package/components/apps/editor/settingsPanel/ArrayStaticInputEditor.svelte +27 -4
- package/package/components/apps/editor/settingsPanel/ArrayStaticInputEditor.svelte.d.ts +3 -1
- package/package/components/apps/editor/settingsPanel/ComponentPanel.svelte +68 -28
- package/package/components/apps/editor/settingsPanel/DecisionTreeGraphEditor.svelte +1 -1
- package/package/components/apps/editor/settingsPanel/GridCondition.svelte +57 -43
- package/package/components/apps/editor/settingsPanel/GridTab.svelte +15 -12
- package/package/components/apps/editor/settingsPanel/InputsSpecEditor.svelte +9 -3
- package/package/components/apps/editor/settingsPanel/InputsSpecEditor.svelte.d.ts +4 -0
- package/package/components/apps/editor/settingsPanel/InputsSpecsEditor.svelte +8 -0
- package/package/components/apps/editor/settingsPanel/InputsSpecsEditor.svelte.d.ts +2 -0
- package/package/components/apps/editor/settingsPanel/OneOfInputSpecsEditor.svelte +6 -0
- package/package/components/apps/editor/settingsPanel/OneOfInputSpecsEditor.svelte.d.ts +2 -0
- package/package/components/apps/editor/settingsPanel/Recompute.svelte +4 -5
- package/package/components/apps/editor/settingsPanel/Recompute.svelte.d.ts +3 -0
- package/package/components/apps/editor/settingsPanel/inputEditor/ColorInput.svelte +4 -2
- package/package/components/apps/editor/settingsPanel/inputEditor/DBTableSelect.svelte +42 -0
- package/package/components/apps/editor/settingsPanel/inputEditor/DBTableSelect.svelte.d.ts +19 -0
- package/package/components/apps/editor/settingsPanel/inputEditor/EvalV2InputEditor.svelte +24 -2
- package/package/components/apps/editor/settingsPanel/inputEditor/EvalV2InputEditor.svelte.d.ts +2 -0
- package/package/components/apps/editor/settingsPanel/inputEditor/StaticInputEditor.svelte +25 -15
- package/package/components/apps/editor/settingsPanel/script/BackgroundScriptSettings.svelte +1 -1
- package/package/components/apps/editor/settingsPanel/script/ComponentScriptSettings.svelte +1 -1
- package/package/components/apps/editor/settingsPanel/script/shared/ScriptSettingHeader.svelte +8 -1
- package/package/components/apps/editor/settingsPanel/script/shared/ScriptSettingHeader.svelte.d.ts +1 -0
- package/package/components/apps/editor/settingsPanel/script/shared/ScriptTriggers.svelte +13 -0
- package/package/components/apps/inputType.d.ts +2 -2
- package/package/components/apps/svelte-select/lib/Select.svelte +2 -1
- package/package/components/apps/types.d.ts +5 -3
- package/package/components/build_workers.js +9 -13
- package/package/components/common/button/Button.svelte +78 -36
- package/package/components/common/button/Button.svelte.d.ts +7 -0
- package/package/components/common/button/model.d.ts +0 -1
- package/package/components/common/button/model.js +0 -8
- package/package/components/common/calendarPicker/CalendarPicker.svelte +11 -37
- package/package/components/common/confirmationModal/ConfirmationModal.svelte +11 -10
- package/package/components/common/confirmationModal/UnsavedConfirmationModal.svelte +5 -12
- package/package/components/common/confirmationModal/UnsavedConfirmationModal.svelte.d.ts +0 -3
- package/package/components/common/table/ScriptRow.svelte +28 -1
- package/package/components/common/tabs/Tab.svelte +6 -4
- package/package/components/common/tabs/Tab.svelte.d.ts +1 -0
- package/package/components/common/toggleButton-v2/ToggleButtonGroup.svelte +4 -2
- package/package/components/copilot/IteratorGen.svelte +10 -5
- package/package/components/copilot/MetadataGen.svelte +6 -1
- package/package/components/copilot/PredicateGen.svelte +3 -4
- package/package/components/copilot/ScriptFix.svelte +1 -1
- package/package/components/copilot/StepGen.svelte +2 -1
- package/package/components/copilot/StepGen.svelte.d.ts +1 -0
- package/package/components/copilot/StepInputGen.svelte +13 -7
- package/package/components/copilot/StepInputsGen.svelte +12 -7
- package/package/components/copilot/lib.d.ts +1 -1
- package/package/components/copilot/lib.js +2 -2
- package/package/components/details/Menu.svelte +11 -6
- package/package/components/details/Menu.svelte.d.ts +1 -3
- package/package/components/details/WebhooksPanel.svelte +1 -1
- package/package/components/flows/content/FlowBranchesAllWrapper.svelte +11 -10
- package/package/components/flows/content/FlowBranchesOneWrapper.svelte +11 -9
- package/package/components/flows/content/FlowInputs.svelte +84 -238
- package/package/components/flows/content/FlowLoop.svelte +25 -16
- package/package/components/flows/content/FlowModuleComponent.svelte +17 -2
- package/package/components/flows/content/FlowModuleComponent.svelte.d.ts +1 -0
- package/package/components/flows/content/FlowModuleWrapper.svelte +5 -0
- package/package/components/flows/content/FlowSchedules.svelte +75 -1
- package/package/components/flows/content/FlowSettings.svelte +5 -0
- package/package/components/flows/content/SuspendDrawer.svelte +1 -1
- package/package/components/flows/flowStateUtils.d.ts +1 -1
- package/package/components/flows/flowStateUtils.js +2 -2
- package/package/components/flows/idUtils.js +12 -1
- package/package/components/flows/map/FlowModuleSchemaMap.svelte +2 -2
- package/package/components/flows/map/InsertModuleButton.svelte +1 -3
- package/package/components/flows/map/MapItem.svelte +1 -1
- package/package/components/flows/pickers/FlowScriptPicker.svelte.d.ts +1 -1
- package/package/components/flows/scheduleUtils.d.ts +2 -1
- package/package/components/flows/scheduleUtils.js +2 -1
- package/package/components/home/ItemsList.svelte +10 -9
- package/package/components/icons/AsanaIcon.svelte +5 -0
- package/package/components/icons/AsanaIcon.svelte.d.ts +17 -0
- package/package/components/icons/BitbucketIcon.svelte +19 -0
- package/package/components/icons/BitbucketIcon.svelte.d.ts +17 -0
- package/package/components/icons/CACertificate.svelte +7 -0
- package/package/components/icons/CACertificate.svelte.d.ts +17 -0
- package/package/components/icons/CurrencyApiIcon.svelte +24 -0
- package/package/components/icons/CurrencyApiIcon.svelte.d.ts +17 -0
- package/package/components/icons/DynatraceIcon.svelte +26 -0
- package/package/components/icons/DynatraceIcon.svelte.d.ts +17 -0
- package/package/components/icons/EdgeDbIcon.svelte +25 -0
- package/package/components/icons/EdgeDbIcon.svelte.d.ts +17 -0
- package/package/components/icons/GitIcon.svelte +7 -0
- package/package/components/icons/GitIcon.svelte.d.ts +17 -0
- package/package/components/icons/GoogleCloudIcon.svelte +20 -0
- package/package/components/icons/GoogleCloudIcon.svelte.d.ts +17 -0
- package/package/components/icons/IpinfoIcon.svelte +8 -0
- package/package/components/icons/IpinfoIcon.svelte.d.ts +17 -0
- package/package/components/icons/MSTeamsIcon.svelte +5 -0
- package/package/components/icons/MSTeamsIcon.svelte.d.ts +17 -0
- package/package/components/icons/MailgunIcon.svelte +11 -0
- package/package/components/icons/MailgunIcon.svelte.d.ts +17 -0
- package/package/components/icons/PushoverIcon.svelte +8 -0
- package/package/components/icons/PushoverIcon.svelte.d.ts +17 -0
- package/package/components/icons/QuickbooksIcon.svelte +5 -0
- package/package/components/icons/QuickbooksIcon.svelte.d.ts +17 -0
- package/package/components/icons/ResendIcon.svelte +7 -0
- package/package/components/icons/ResendIcon.svelte.d.ts +17 -0
- package/package/components/icons/TrelloIcon.svelte +5 -0
- package/package/components/icons/TrelloIcon.svelte.d.ts +17 -0
- package/package/components/icons/TwilioIcon.svelte +11 -0
- package/package/components/icons/TwilioIcon.svelte.d.ts +17 -0
- package/package/components/icons/ZendeskIcon.svelte +11 -0
- package/package/components/icons/ZendeskIcon.svelte.d.ts +17 -0
- package/package/components/icons/index.d.ts +36 -1
- package/package/components/icons/index.js +37 -2
- package/package/components/instanceSettings.js +38 -1
- package/package/components/jobs/JobPreview.svelte +4 -1
- package/package/components/runs/JobLoader.svelte +6 -4
- package/package/components/runs/JobPreview.svelte +15 -1
- package/package/components/runs/ManuelDatePicker.svelte +1 -1
- package/package/components/runs/NoWorkerWithTagWarning.svelte +5 -3
- package/package/components/runs/RunRow.svelte +5 -19
- package/package/components/runs/RunsFilter.svelte +1 -1
- package/package/components/runs/RunsTable.svelte +1 -1
- package/package/components/scriptEditor/LogPanel.svelte +12 -0
- package/package/components/settings/PremiumInfo.svelte +92 -31
- package/package/components/settings/WorkspaceUserSettings.svelte +42 -6
- package/package/components/sidebar/changelogs.js +20 -0
- package/package/components/table/AutoDataTable.svelte +18 -4
- package/package/consts.d.ts +0 -3
- package/package/consts.js +0 -3
- package/package/enterpriseUtils.d.ts +1 -0
- package/package/enterpriseUtils.js +17 -0
- package/package/gen/core/OpenAPI.js +1 -1
- package/package/gen/index.d.ts +5 -2
- package/package/gen/models/LargeFileStorage.d.ts +3 -1
- package/package/gen/models/LargeFileStorage.js +2 -0
- package/package/gen/models/User.d.ts +0 -2
- package/package/gen/models/UserUsage.d.ts +4 -0
- package/package/gen/models/WorkflowStatus.d.ts +6 -0
- package/package/gen/models/WorkflowStatusRecord.d.ts +2 -0
- package/package/gen/models/WorkflowStatusRecord.js +5 -0
- package/package/gen/models/WorkflowTask.d.ts +4 -0
- package/package/gen/models/WorkflowTask.js +5 -0
- package/package/gen/models/WorkspaceDefaultScripts.d.ts +5 -0
- package/package/gen/models/WorkspaceDefaultScripts.js +5 -0
- package/package/gen/services/AdminService.d.ts +6 -9
- package/package/gen/services/AdminService.js +6 -7
- package/package/gen/services/FolderService.d.ts +3 -2
- package/package/gen/services/JobService.d.ts +27 -2
- package/package/gen/services/JobService.js +22 -2
- package/package/gen/services/SettingService.d.ts +11 -0
- package/package/gen/services/SettingService.js +13 -0
- package/package/gen/services/UserService.d.ts +14 -9
- package/package/gen/services/UserService.js +20 -7
- package/package/gen/services/WorkspaceService.d.ts +62 -0
- package/package/gen/services/WorkspaceService.js +76 -0
- package/package/infer.d.ts +20 -1
- package/package/infer.js +39 -19
- package/package/script_helpers.d.ts +7 -6
- package/package/script_helpers.js +24 -7
- package/package/scripts.d.ts +11 -0
- package/package/scripts.js +38 -1
- package/package/stores.d.ts +2 -1
- package/package/stores.js +2 -0
- package/package/utils.d.ts +1 -1
- package/package/utils.js +3 -3
- package/package.json +3 -4
- package/package/components/common/confirmationModal/model.d.ts +0 -9
- package/package/components/common/confirmationModal/model.js +0 -1
- package/package/gen/models/NewUser.d.ts +0 -5
- package/package/gen/models/Usage.d.ts +0 -3
- /package/package/gen/models/{NewUser.js → UserUsage.js} +0 -0
- /package/package/gen/models/{Usage.js → WorkflowStatus.js} +0 -0
|
@@ -1,285 +1,120 @@
|
|
|
1
1
|
import { JobService, Preview } from '../../../../../gen';
|
|
2
2
|
import { buildClientSchema, getIntrospectionQuery, printSchema } from 'graphql';
|
|
3
3
|
import { tryEvery } from '../../../../../utils';
|
|
4
|
-
export function makeQuery(table, tableMetadata, whereClause) {
|
|
5
|
-
if (!table)
|
|
6
|
-
throw new Error('Table name is required');
|
|
7
|
-
const filteredColumns = tableMetadata
|
|
8
|
-
.filter((x) => x != undefined)
|
|
9
|
-
.map((column) => `"${column?.field}"::text`);
|
|
10
|
-
let selectClause = filteredColumns.join(', ');
|
|
11
|
-
let orderBy = `
|
|
12
|
-
${tableMetadata
|
|
13
|
-
.map((column) => `
|
|
14
|
-
(CASE WHEN $4 = '${column.field}' AND $5 IS false THEN "${column.field}"::text END),
|
|
15
|
-
(CASE WHEN $4 = '${column.field}' AND $5 IS true THEN "${column.field}"::text END) DESC`)
|
|
16
|
-
.join(',\n')}`;
|
|
17
|
-
let query = `
|
|
18
|
-
-- $1 limit
|
|
19
|
-
-- $2 offset
|
|
20
|
-
-- $3 quicksearch
|
|
21
|
-
-- $4 orderBy
|
|
22
|
-
-- $5 is_desc
|
|
23
|
-
|
|
24
|
-
SELECT ${selectClause} FROM "${table}" WHERE `;
|
|
25
|
-
if (whereClause) {
|
|
26
|
-
query += ` ${whereClause} AND `;
|
|
27
|
-
}
|
|
28
|
-
query += ` ($3 = '' OR "${table}"::text ILIKE '%' || $3 || '%')`;
|
|
29
|
-
query += ` ORDER BY ${orderBy}`;
|
|
30
|
-
query += ` LIMIT $1::INT OFFSET $2::INT`;
|
|
31
|
-
return query;
|
|
32
|
-
}
|
|
33
|
-
export function createPostgresInsert(table, columns, resource) {
|
|
34
|
-
return {
|
|
35
|
-
runnable: {
|
|
36
|
-
name: 'AppDbExplorer',
|
|
37
|
-
type: 'runnableByName',
|
|
38
|
-
inlineScript: {
|
|
39
|
-
content: makeInsertQuery(table, columns),
|
|
40
|
-
language: Preview.language.POSTGRESQL,
|
|
41
|
-
schema: {
|
|
42
|
-
$schema: 'https://json-schema.org/draft/2020-12/schema',
|
|
43
|
-
properties: {},
|
|
44
|
-
required: ['database'],
|
|
45
|
-
type: 'object'
|
|
46
|
-
}
|
|
47
|
-
}
|
|
48
|
-
},
|
|
49
|
-
fields: {
|
|
50
|
-
database: {
|
|
51
|
-
type: 'static',
|
|
52
|
-
value: resource,
|
|
53
|
-
fieldType: 'object',
|
|
54
|
-
format: 'resource-postgresql'
|
|
55
|
-
}
|
|
56
|
-
},
|
|
57
|
-
type: 'runnable',
|
|
58
|
-
fieldType: 'object'
|
|
59
|
-
};
|
|
60
|
-
}
|
|
61
|
-
export function makeInsertQuery(table, columns) {
|
|
62
|
-
if (!table)
|
|
63
|
-
throw new Error('Table name is required');
|
|
64
|
-
const columnsInsert = columns.filter((x) => !x.hideInsert);
|
|
65
|
-
const columnsDefault = columns.filter((x) => x.hideInsert && (x.overrideDefaultValue || x.defaultvalue === null));
|
|
66
|
-
const allInsertColumns = columnsInsert.concat(columnsDefault);
|
|
67
|
-
// Constructing the query
|
|
68
|
-
const query = `
|
|
69
|
-
${columnsInsert.map((column, i) => `-- $${i + 1} ${column.field}`).join('\n')}
|
|
70
|
-
|
|
71
|
-
INSERT INTO ${table} (${allInsertColumns.map((c) => c.field).join(', ')})
|
|
72
|
-
VALUES (${columnsInsert.map((c, i) => `$${i + 1}::${c.datatype}`).join(', ')}${columnsDefault.length > 0 ? ',' : ''} ${columnsDefault
|
|
73
|
-
.map((c) => (c.defaultValueNull ? 'NULL' : `${c.defaultUserValue}::${c.datatype}`))
|
|
74
|
-
.join(', ')})`;
|
|
75
|
-
return query;
|
|
76
|
-
}
|
|
77
|
-
export function getPrimaryKeys(tableMetadata) {
|
|
78
|
-
let r = tableMetadata?.filter((x) => x.isprimarykey)?.map((x) => x.field) ?? [];
|
|
79
|
-
if (r?.length === 0) {
|
|
80
|
-
r = tableMetadata?.map((x) => x.field) ?? [];
|
|
81
|
-
}
|
|
82
|
-
return r ?? [];
|
|
83
|
-
}
|
|
84
|
-
export function createPostgresInput(resource, table, columns, whereClause) {
|
|
85
|
-
if (!resource || !table || !columns) {
|
|
86
|
-
// Return undefined if resource or table is not defined
|
|
87
|
-
return undefined;
|
|
88
|
-
}
|
|
89
|
-
if (columns.length === 0) {
|
|
90
|
-
return undefined;
|
|
91
|
-
}
|
|
92
|
-
const getRunnable = {
|
|
93
|
-
name: 'AppDbExplorer',
|
|
94
|
-
type: 'runnableByName',
|
|
95
|
-
inlineScript: {
|
|
96
|
-
content: makeQuery(table, columns, whereClause),
|
|
97
|
-
language: Preview.language.POSTGRESQL
|
|
98
|
-
}
|
|
99
|
-
};
|
|
100
|
-
const getQuery = {
|
|
101
|
-
runnable: getRunnable,
|
|
102
|
-
fields: {
|
|
103
|
-
database: {
|
|
104
|
-
type: 'static',
|
|
105
|
-
value: resource,
|
|
106
|
-
fieldType: 'object',
|
|
107
|
-
format: 'resource-postgresql'
|
|
108
|
-
}
|
|
109
|
-
},
|
|
110
|
-
type: 'runnable',
|
|
111
|
-
fieldType: 'object'
|
|
112
|
-
};
|
|
113
|
-
return getQuery;
|
|
114
|
-
}
|
|
115
|
-
export function createUpdatePostgresInput(resource, table, column, columns) {
|
|
116
|
-
if (!resource || !table) {
|
|
117
|
-
return undefined;
|
|
118
|
-
}
|
|
119
|
-
const query = updateWithAllValues();
|
|
120
|
-
function updateWithAllValues() {
|
|
121
|
-
let query = `
|
|
122
|
-
-- $1 valueToUpdate
|
|
123
|
-
${columns.map((c, i) => `-- $${i + 2} ${c.field}`).join('\n')}
|
|
124
|
-
|
|
125
|
-
UPDATE ${table} SET ${column.field} = $1::text::${column.datatype} WHERE
|
|
126
|
-
${columns.map((c, i) => `${c.field} = $${i + 2}::text::${c.datatype} `).join(' AND ')}
|
|
127
|
-
RETURNING 1`;
|
|
128
|
-
return query;
|
|
129
|
-
}
|
|
130
|
-
const updateRunnable = {
|
|
131
|
-
name: 'AppDbExplorer',
|
|
132
|
-
type: 'runnableByName',
|
|
133
|
-
inlineScript: {
|
|
134
|
-
content: query,
|
|
135
|
-
language: Preview.language.POSTGRESQL,
|
|
136
|
-
schema: {
|
|
137
|
-
$schema: 'https://json-schema.org/draft/2020-12/schema',
|
|
138
|
-
properties: {},
|
|
139
|
-
required: ['database'],
|
|
140
|
-
type: 'object'
|
|
141
|
-
}
|
|
142
|
-
}
|
|
143
|
-
};
|
|
144
|
-
const updateQuery = {
|
|
145
|
-
runnable: updateRunnable,
|
|
146
|
-
fields: {
|
|
147
|
-
database: {
|
|
148
|
-
type: 'static',
|
|
149
|
-
value: resource,
|
|
150
|
-
fieldType: 'object',
|
|
151
|
-
format: 'resource-postgresql'
|
|
152
|
-
}
|
|
153
|
-
},
|
|
154
|
-
type: 'runnable',
|
|
155
|
-
fieldType: 'object'
|
|
156
|
-
};
|
|
157
|
-
return updateQuery;
|
|
158
|
-
}
|
|
159
|
-
export function createDeletePostgresInput(resource, table, columns) {
|
|
160
|
-
if (!resource || !table) {
|
|
161
|
-
return undefined;
|
|
162
|
-
}
|
|
163
|
-
const query = updateWithAllValues();
|
|
164
|
-
function updateWithAllValues() {
|
|
165
|
-
let query = `
|
|
166
|
-
${columns.map((c, i) => `-- $${i + 1} ${c.field}`).join('\n')}
|
|
167
|
-
|
|
168
|
-
DELETE FROM ${table} WHERE ${columns
|
|
169
|
-
.map((c, i) => `${c.field} = $${i + 1}::text::${c.datatype}`)
|
|
170
|
-
.join(' AND ')} RETURNING 1;`;
|
|
171
|
-
return query;
|
|
172
|
-
}
|
|
173
|
-
const updateRunnable = {
|
|
174
|
-
name: 'AppDbExplorer',
|
|
175
|
-
type: 'runnableByName',
|
|
176
|
-
inlineScript: {
|
|
177
|
-
content: query,
|
|
178
|
-
language: Preview.language.POSTGRESQL,
|
|
179
|
-
schema: {
|
|
180
|
-
$schema: 'https://json-schema.org/draft/2020-12/schema',
|
|
181
|
-
properties: {},
|
|
182
|
-
required: ['database'],
|
|
183
|
-
type: 'object'
|
|
184
|
-
}
|
|
185
|
-
}
|
|
186
|
-
};
|
|
187
|
-
const updateQuery = {
|
|
188
|
-
runnable: updateRunnable,
|
|
189
|
-
fields: {
|
|
190
|
-
database: {
|
|
191
|
-
type: 'static',
|
|
192
|
-
value: resource,
|
|
193
|
-
fieldType: 'object',
|
|
194
|
-
format: 'resource-postgresql'
|
|
195
|
-
}
|
|
196
|
-
},
|
|
197
|
-
type: 'runnable',
|
|
198
|
-
fieldType: 'object'
|
|
199
|
-
};
|
|
200
|
-
return updateQuery;
|
|
201
|
-
}
|
|
202
|
-
export function getCountPostgresql(resource, table) {
|
|
203
|
-
if (!resource || !table) {
|
|
204
|
-
return undefined;
|
|
205
|
-
}
|
|
206
|
-
const query = `
|
|
207
|
-
-- $1 quicksearch
|
|
208
|
-
SELECT COUNT(*) FROM ${table} WHERE ($1 = '' OR ${table}::text ILIKE '%' || $1 || '%')`;
|
|
209
|
-
const updateRunnable = {
|
|
210
|
-
name: 'AppDbExplorer',
|
|
211
|
-
type: 'runnableByName',
|
|
212
|
-
inlineScript: {
|
|
213
|
-
content: query,
|
|
214
|
-
language: Preview.language.POSTGRESQL,
|
|
215
|
-
schema: {
|
|
216
|
-
$schema: 'https://json-schema.org/draft/2020-12/schema',
|
|
217
|
-
properties: {
|
|
218
|
-
database: {
|
|
219
|
-
description: 'Database name',
|
|
220
|
-
type: 'object',
|
|
221
|
-
format: 'resource-postgresql'
|
|
222
|
-
}
|
|
223
|
-
},
|
|
224
|
-
required: ['database'],
|
|
225
|
-
type: 'object'
|
|
226
|
-
}
|
|
227
|
-
}
|
|
228
|
-
};
|
|
229
|
-
const updateQuery = {
|
|
230
|
-
runnable: updateRunnable,
|
|
231
|
-
fields: {
|
|
232
|
-
database: {
|
|
233
|
-
type: 'static',
|
|
234
|
-
value: resource,
|
|
235
|
-
fieldType: 'object',
|
|
236
|
-
format: 'resource-postgresql'
|
|
237
|
-
}
|
|
238
|
-
},
|
|
239
|
-
type: 'runnable',
|
|
240
|
-
fieldType: 'object'
|
|
241
|
-
};
|
|
242
|
-
return updateQuery;
|
|
243
|
-
}
|
|
244
4
|
export var ColumnIdentity;
|
|
245
5
|
(function (ColumnIdentity) {
|
|
246
6
|
ColumnIdentity["ByDefault"] = "By Default";
|
|
247
7
|
ColumnIdentity["Always"] = "Always";
|
|
248
8
|
ColumnIdentity["No"] = "No";
|
|
249
9
|
})(ColumnIdentity || (ColumnIdentity = {}));
|
|
250
|
-
export async function loadTableMetaData(resource, workspace, table) {
|
|
10
|
+
export async function loadTableMetaData(resource, workspace, table, resourceType) {
|
|
251
11
|
if (!resource || !table || !workspace) {
|
|
252
12
|
return undefined;
|
|
253
13
|
}
|
|
254
|
-
|
|
14
|
+
let code = '';
|
|
15
|
+
if (resourceType === 'mysql') {
|
|
16
|
+
code = `
|
|
255
17
|
SELECT
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
|
|
276
|
-
|
|
277
|
-
FROM pg_catalog.
|
|
278
|
-
WHERE
|
|
279
|
-
|
|
280
|
-
|
|
18
|
+
COLUMN_NAME as field,
|
|
19
|
+
COLUMN_TYPE as DataType,
|
|
20
|
+
COLUMN_DEFAULT as DefaultValue,
|
|
21
|
+
CASE WHEN COLUMN_KEY = 'PRI' THEN 'YES' ELSE 'NO' END as IsPrimaryKey,
|
|
22
|
+
CASE WHEN EXTRA like '%auto_increment%' THEN 'YES' ELSE 'NO' END as IsIdentity,
|
|
23
|
+
CASE WHEN IS_NULLABLE = 'YES' THEN 'YES' ELSE 'NO' END as IsNullable,
|
|
24
|
+
CASE WHEN DATA_TYPE = 'enum' THEN true ELSE false END as IsEnum
|
|
25
|
+
FROM
|
|
26
|
+
INFORMATION_SCHEMA.COLUMNS
|
|
27
|
+
WHERE
|
|
28
|
+
TABLE_NAME = '${table}'
|
|
29
|
+
ORDER BY
|
|
30
|
+
ORDINAL_POSITION;
|
|
31
|
+
`;
|
|
32
|
+
}
|
|
33
|
+
else if (resourceType === 'postgresql') {
|
|
34
|
+
code = `
|
|
35
|
+
SELECT
|
|
36
|
+
a.attname as field,
|
|
37
|
+
pg_catalog.format_type(a.atttypid, a.atttypmod) as DataType,
|
|
38
|
+
(SELECT substring(pg_catalog.pg_get_expr(d.adbin, d.adrelid, true) for 128)
|
|
39
|
+
FROM pg_catalog.pg_attrdef d
|
|
40
|
+
WHERE d.adrelid = a.attrelid AND d.adnum = a.attnum AND a.atthasdef) as DefaultValue,
|
|
41
|
+
(SELECT CASE WHEN i.indisprimary THEN true ELSE 'NO' END
|
|
42
|
+
FROM pg_catalog.pg_class tbl, pg_catalog.pg_class idx, pg_catalog.pg_index i, pg_catalog.pg_attribute att
|
|
43
|
+
WHERE tbl.oid = a.attrelid AND idx.oid = i.indexrelid AND att.attrelid = tbl.oid
|
|
44
|
+
AND i.indrelid = tbl.oid AND att.attnum = any(i.indkey) AND att.attname = a.attname LIMIT 1) as IsPrimaryKey,
|
|
45
|
+
CASE a.attidentity
|
|
46
|
+
WHEN 'd' THEN 'By Default'
|
|
47
|
+
WHEN 'a' THEN 'Always'
|
|
48
|
+
ELSE 'No'
|
|
49
|
+
END as IsIdentity,
|
|
50
|
+
CASE a.attnotnull
|
|
51
|
+
WHEN false THEN 'YES'
|
|
52
|
+
ELSE 'NO'
|
|
53
|
+
END as IsNullable,
|
|
54
|
+
(SELECT true
|
|
55
|
+
FROM pg_catalog.pg_enum e
|
|
56
|
+
WHERE e.enumtypid = a.atttypid FETCH FIRST ROW ONLY) as IsEnum
|
|
57
|
+
FROM pg_catalog.pg_attribute a
|
|
58
|
+
WHERE a.attrelid = (SELECT oid FROM pg_catalog.pg_class WHERE relname = '${table}')
|
|
59
|
+
AND a.attnum > 0 AND NOT a.attisdropped
|
|
60
|
+
ORDER BY a.attnum;
|
|
61
|
+
|
|
62
|
+
`;
|
|
63
|
+
}
|
|
64
|
+
else if (resourceType === 'ms_sql_server') {
|
|
65
|
+
code = `
|
|
66
|
+
SELECT
|
|
67
|
+
COLUMN_NAME as field,
|
|
68
|
+
DATA_TYPE as DataType,
|
|
69
|
+
COLUMN_DEFAULT as DefaultValue,
|
|
70
|
+
CASE WHEN COLUMNPROPERTY(OBJECT_ID(TABLE_NAME), COLUMN_NAME, 'IsIdentity') = 1 THEN 'By Default' ELSE 'No' END as IsIdentity,
|
|
71
|
+
CASE WHEN COLUMNPROPERTY(OBJECT_ID(TABLE_NAME), COLUMN_NAME, 'IsIdentity') = 1 THEN 1 ELSE 0 END as IsPrimaryKey, -- This line still needs correction for primary key identification
|
|
72
|
+
CASE WHEN IS_NULLABLE = 'YES' THEN 'YES' ELSE 'NO' END as IsNullable,
|
|
73
|
+
CASE WHEN DATA_TYPE = 'enum' THEN 1 ELSE 0 END as IsEnum
|
|
74
|
+
FROM
|
|
75
|
+
INFORMATION_SCHEMA.COLUMNS
|
|
76
|
+
WHERE
|
|
77
|
+
TABLE_NAME = '${table}'
|
|
78
|
+
ORDER BY
|
|
79
|
+
ORDINAL_POSITION;
|
|
281
80
|
|
|
282
|
-
`;
|
|
81
|
+
`;
|
|
82
|
+
}
|
|
83
|
+
else if (resourceType === 'snowflake') {
|
|
84
|
+
code = `
|
|
85
|
+
select COLUMN_NAME as field,
|
|
86
|
+
DATA_TYPE as DataType,
|
|
87
|
+
COLUMN_DEFAULT as DefaultValue,
|
|
88
|
+
CASE WHEN COLUMN_DEFAULT like 'AUTOINCREMENT%' THEN 'By Default' ELSE 'No' END as IsIdentity,
|
|
89
|
+
CASE WHEN COLUMN_DEFAULT like 'AUTOINCREMENT%' THEN 1 ELSE 0 END as IsPrimaryKey,
|
|
90
|
+
CASE WHEN IS_NULLABLE = 'YES' THEN 'YES' ELSE 'NO' END as IsNullable,
|
|
91
|
+
CASE WHEN DATA_TYPE = 'enum' THEN 1 ELSE 0 END as IsEnum
|
|
92
|
+
from information_schema.columns
|
|
93
|
+
where table_name = '${table}'
|
|
94
|
+
order by ORDINAL_POSITION;
|
|
95
|
+
`;
|
|
96
|
+
}
|
|
97
|
+
else if (resourceType === 'bigquery') {
|
|
98
|
+
code = `SELECT
|
|
99
|
+
c.COLUMN_NAME as field,
|
|
100
|
+
DATA_TYPE as DataType,
|
|
101
|
+
CASE WHEN COLUMN_DEFAULT = 'NULL' THEN '' ELSE COLUMN_DEFAULT END as DefaultValue,
|
|
102
|
+
CASE WHEN constraint_name is not null THEN true ELSE false END as IsPrimaryKey,
|
|
103
|
+
'No' as IsIdentity,
|
|
104
|
+
IS_NULLABLE as IsNullable,
|
|
105
|
+
false as IsEnum
|
|
106
|
+
FROM
|
|
107
|
+
test_dataset.INFORMATION_SCHEMA.COLUMNS c
|
|
108
|
+
LEFT JOIN
|
|
109
|
+
test_dataset.INFORMATION_SCHEMA.KEY_COLUMN_USAGE p
|
|
110
|
+
on c.table_name = p.table_name AND c.column_name = p.COLUMN_NAME
|
|
111
|
+
WHERE
|
|
112
|
+
c.TABLE_NAME = "${table.split('.')[1]}"
|
|
113
|
+
order by c.ORDINAL_POSITION;`;
|
|
114
|
+
}
|
|
115
|
+
else {
|
|
116
|
+
throw new Error('Unsupported database type:' + resourceType);
|
|
117
|
+
}
|
|
283
118
|
const maxRetries = 3;
|
|
284
119
|
let attempts = 0;
|
|
285
120
|
while (attempts < maxRetries) {
|
|
@@ -287,7 +122,7 @@ ORDER BY a.attnum;
|
|
|
287
122
|
const job = await JobService.runScriptPreview({
|
|
288
123
|
workspace: workspace,
|
|
289
124
|
requestBody: {
|
|
290
|
-
language:
|
|
125
|
+
language: getLanguageByResourceType(resourceType),
|
|
291
126
|
content: code,
|
|
292
127
|
args: {
|
|
293
128
|
database: resource
|
|
@@ -301,7 +136,12 @@ ORDER BY a.attnum;
|
|
|
301
136
|
});
|
|
302
137
|
if (testResult.success) {
|
|
303
138
|
attempts = maxRetries;
|
|
304
|
-
|
|
139
|
+
if (resourceType === 'ms_sql_server') {
|
|
140
|
+
return lowercaseKeys(testResult.result[0]);
|
|
141
|
+
}
|
|
142
|
+
else {
|
|
143
|
+
return lowercaseKeys(testResult.result);
|
|
144
|
+
}
|
|
305
145
|
}
|
|
306
146
|
else {
|
|
307
147
|
attempts++;
|
|
@@ -324,6 +164,15 @@ export function resourceTypeToLang(rt) {
|
|
|
324
164
|
return rt;
|
|
325
165
|
}
|
|
326
166
|
}
|
|
167
|
+
function lowercaseKeys(arr) {
|
|
168
|
+
return arr.map((obj) => {
|
|
169
|
+
const newObj = {};
|
|
170
|
+
Object.keys(obj).forEach((key) => {
|
|
171
|
+
newObj[key.toLowerCase()] = obj[key];
|
|
172
|
+
});
|
|
173
|
+
return newObj;
|
|
174
|
+
});
|
|
175
|
+
}
|
|
327
176
|
const scripts = {
|
|
328
177
|
postgresql: {
|
|
329
178
|
code: `SELECT table_name, column_name, udt_name, column_default, is_nullable, table_schema FROM information_schema.columns WHERE table_schema != 'pg_catalog' AND table_schema != 'information_schema'`,
|
|
@@ -358,7 +207,7 @@ const scripts = {
|
|
|
358
207
|
argName: 'database'
|
|
359
208
|
},
|
|
360
209
|
mysql: {
|
|
361
|
-
code: "
|
|
210
|
+
code: "SELECT DATABASE() AS default_db_name, TABLE_SCHEMA, TABLE_NAME, DATA_TYPE, COLUMN_NAME, COLUMN_DEFAULT FROM information_schema.columns WHERE table_schema = DATABASE() OR table_schema NOT IN ('information_schema', 'mysql', 'performance_schema', 'sys', '_vt');",
|
|
362
211
|
processingFn: (rows) => {
|
|
363
212
|
const schemas = rows.reduce((acc, a) => {
|
|
364
213
|
const table_schema = a.TABLE_SCHEMA;
|
|
@@ -395,7 +244,7 @@ const scripts = {
|
|
|
395
244
|
argName: 'api'
|
|
396
245
|
},
|
|
397
246
|
bigquery: {
|
|
398
|
-
code: `import { BigQuery } from '
|
|
247
|
+
code: `import { BigQuery } from '@google-cloud/bigquery@7.5.0';
|
|
399
248
|
export async function main(args: bigquery) {
|
|
400
249
|
const bq = new BigQuery({
|
|
401
250
|
credentials: args
|
|
@@ -422,7 +271,7 @@ GROUP BY table_name".replace('{dataset.id}', dataset.id)
|
|
|
422
271
|
}
|
|
423
272
|
return schema
|
|
424
273
|
}`,
|
|
425
|
-
lang: '
|
|
274
|
+
lang: 'bun',
|
|
426
275
|
argName: 'args'
|
|
427
276
|
},
|
|
428
277
|
snowflake: {
|
|
@@ -573,45 +422,171 @@ export function formatSchema(dbSchema) {
|
|
|
573
422
|
export function formatGraphqlSchema(dbSchema) {
|
|
574
423
|
return printSchema(buildClientSchema(dbSchema.schema));
|
|
575
424
|
}
|
|
576
|
-
|
|
577
|
-
|
|
578
|
-
|
|
579
|
-
|
|
580
|
-
|
|
581
|
-
|
|
582
|
-
|
|
583
|
-
|
|
584
|
-
|
|
585
|
-
|
|
586
|
-
|
|
587
|
-
|
|
588
|
-
|
|
589
|
-
|
|
590
|
-
|
|
591
|
-
|
|
592
|
-
|
|
593
|
-
|
|
594
|
-
|
|
595
|
-
|
|
596
|
-
|
|
425
|
+
export function getFieldType(type, databaseType) {
|
|
426
|
+
switch (databaseType) {
|
|
427
|
+
case 'postgresql': {
|
|
428
|
+
const baseType = type.split('(')[0];
|
|
429
|
+
const validTextTypes = ['character varying', 'text'];
|
|
430
|
+
const validNumberTypes = ['integer', 'bigint', 'numeric', 'double precision'];
|
|
431
|
+
const validDateTypes = ['date', 'timestamp without time zone', 'timestamp with time zone'];
|
|
432
|
+
return validTextTypes.includes(baseType)
|
|
433
|
+
? 'text'
|
|
434
|
+
: validNumberTypes.includes(baseType)
|
|
435
|
+
? 'number'
|
|
436
|
+
: baseType === 'boolean'
|
|
437
|
+
? 'checkbox'
|
|
438
|
+
: validDateTypes.includes(baseType)
|
|
439
|
+
? 'date'
|
|
440
|
+
: 'text';
|
|
441
|
+
}
|
|
442
|
+
case 'mysql': {
|
|
443
|
+
const baseType = type.split('(')[0].toLowerCase(); // Ensure case-insensitive comparison
|
|
444
|
+
const validTextTypes = ['varchar', 'text', 'char', 'mediumtext', 'longtext', 'tinytext'];
|
|
445
|
+
const validNumberTypes = ['int', 'bigint', 'decimal', 'numeric', 'float', 'double'];
|
|
446
|
+
const validDateTypes = ['date', 'datetime', 'timestamp', 'time', 'year'];
|
|
447
|
+
return validTextTypes.includes(baseType)
|
|
448
|
+
? 'text'
|
|
449
|
+
: validNumberTypes.includes(baseType)
|
|
450
|
+
? 'number'
|
|
451
|
+
: baseType === 'boolean'
|
|
452
|
+
? 'checkbox'
|
|
453
|
+
: validDateTypes.includes(baseType)
|
|
454
|
+
? 'date'
|
|
455
|
+
: 'text';
|
|
456
|
+
}
|
|
457
|
+
case 'ms_sql_server': {
|
|
458
|
+
const baseType = type.split('(')[0].toLowerCase(); // Ensure case-insensitive comparison
|
|
459
|
+
const validTextTypes = ['varchar', 'text', 'char', 'nchar', 'nvarchar', 'ntext'];
|
|
460
|
+
const validNumberTypes = [
|
|
461
|
+
'int',
|
|
462
|
+
'bigint',
|
|
463
|
+
'decimal',
|
|
464
|
+
'numeric',
|
|
465
|
+
'float',
|
|
466
|
+
'real',
|
|
467
|
+
'smallint',
|
|
468
|
+
'tinyint'
|
|
469
|
+
];
|
|
470
|
+
const validDateTypes = [
|
|
471
|
+
'date',
|
|
472
|
+
'datetime',
|
|
473
|
+
'datetime2',
|
|
474
|
+
'smalldatetime',
|
|
475
|
+
'datetimeoffset',
|
|
476
|
+
'time'
|
|
477
|
+
];
|
|
478
|
+
return validTextTypes.includes(baseType)
|
|
479
|
+
? 'text'
|
|
480
|
+
: validNumberTypes.includes(baseType)
|
|
481
|
+
? 'number'
|
|
482
|
+
: baseType === 'bit'
|
|
483
|
+
? 'checkbox'
|
|
484
|
+
: validDateTypes.includes(baseType)
|
|
485
|
+
? 'date'
|
|
486
|
+
: 'text';
|
|
487
|
+
}
|
|
488
|
+
case 'snowflake': {
|
|
489
|
+
const baseType = type.split('(')[0].toLowerCase(); // Ensure case-insensitive comparison
|
|
490
|
+
const validTextTypes = ['varchar', 'text', 'char'];
|
|
491
|
+
const validNumberTypes = ['int', 'number', 'decimal', 'float', 'double'];
|
|
492
|
+
const validDateTypes = ['date', 'timestamp', 'time'];
|
|
493
|
+
return validTextTypes.includes(baseType)
|
|
494
|
+
? 'text'
|
|
495
|
+
: validNumberTypes.includes(baseType)
|
|
496
|
+
? 'number'
|
|
497
|
+
: baseType === 'boolean'
|
|
498
|
+
? 'checkbox'
|
|
499
|
+
: validDateTypes.includes(baseType)
|
|
500
|
+
? 'date'
|
|
501
|
+
: 'text';
|
|
502
|
+
}
|
|
503
|
+
default: {
|
|
504
|
+
return 'text';
|
|
505
|
+
}
|
|
597
506
|
}
|
|
598
|
-
|
|
599
|
-
|
|
600
|
-
|
|
601
|
-
|
|
507
|
+
}
|
|
508
|
+
export function buildVisibleFieldList(columnDefs, dbType) {
|
|
509
|
+
// Filter out hidden columns to avoid counting the wrong number of rows
|
|
510
|
+
return columnDefs
|
|
511
|
+
.filter((columnDef) => columnDef && columnDef.ignored !== true)
|
|
512
|
+
.map((column) => {
|
|
513
|
+
switch (dbType) {
|
|
514
|
+
case 'postgresql':
|
|
515
|
+
return `"${column?.field}"`; // PostgreSQL uses double quotes for identifiers
|
|
516
|
+
case 'ms_sql_server':
|
|
517
|
+
return `[${column?.field}]`; // MSSQL uses square brackets for identifiers
|
|
518
|
+
case 'mysql':
|
|
519
|
+
return `\`${column?.field}\``; // MySQL uses backticks
|
|
520
|
+
case 'snowflake':
|
|
521
|
+
return `"${column?.field}"`; // Snowflake uses double quotes for identifiers
|
|
522
|
+
case 'bigquery':
|
|
523
|
+
return `\`${column?.field}\``; // BigQuery uses backticks
|
|
524
|
+
default:
|
|
525
|
+
throw new Error('Unsupported database type');
|
|
526
|
+
}
|
|
527
|
+
});
|
|
528
|
+
}
|
|
529
|
+
export function getLanguageByResourceType(name) {
|
|
530
|
+
const language = {
|
|
531
|
+
postgresql: Preview.language.POSTGRESQL,
|
|
532
|
+
mysql: Preview.language.MYSQL,
|
|
533
|
+
ms_sql_server: Preview.language.MSSQL,
|
|
534
|
+
snowflake: Preview.language.SNOWFLAKE,
|
|
535
|
+
bigquery: Preview.language.BIGQUERY
|
|
536
|
+
};
|
|
537
|
+
return language[name];
|
|
538
|
+
}
|
|
539
|
+
export function buildParameters(columns, databaseType) {
|
|
540
|
+
return columns
|
|
541
|
+
.map((column, i) => {
|
|
542
|
+
switch (databaseType) {
|
|
543
|
+
case 'postgresql':
|
|
544
|
+
return `-- $${i + 1} ${column.field}`;
|
|
545
|
+
case 'mysql':
|
|
546
|
+
return `-- :${column.field} (${column.datatype.split('(')[0]})`;
|
|
547
|
+
case 'ms_sql_server':
|
|
548
|
+
return `-- @p${i + 1} ${column.field} (${column.datatype.split('(')[0]})`;
|
|
549
|
+
case 'snowflake':
|
|
550
|
+
return `-- ? ${column.field} (${column.datatype.split('(')[0]})`;
|
|
551
|
+
case 'bigquery':
|
|
552
|
+
return `-- @${column.field} (${column.datatype.split('(')[0]})`;
|
|
553
|
+
}
|
|
554
|
+
})
|
|
555
|
+
.join('\n');
|
|
556
|
+
}
|
|
557
|
+
export function getPrimaryKeys(tableMetadata) {
|
|
558
|
+
let r = tableMetadata?.filter((x) => x.isprimarykey)?.map((x) => x.field) ?? [];
|
|
559
|
+
if (r?.length === 0) {
|
|
560
|
+
r = tableMetadata?.map((x) => x.field) ?? [];
|
|
602
561
|
}
|
|
562
|
+
return r ?? [];
|
|
603
563
|
}
|
|
604
|
-
|
|
605
|
-
|
|
606
|
-
|
|
607
|
-
|
|
608
|
-
|
|
609
|
-
|
|
610
|
-
|
|
611
|
-
|
|
612
|
-
|
|
613
|
-
|
|
564
|
+
export function getTablesByResource(schema, dbType) {
|
|
565
|
+
const s = Object.values(schema)?.[0];
|
|
566
|
+
switch (dbType) {
|
|
567
|
+
case 'postgresql':
|
|
568
|
+
case 'mysql':
|
|
569
|
+
case 'ms_sql_server':
|
|
570
|
+
case 'snowflake':
|
|
571
|
+
return Object.entries(s?.schema ?? {}).reduce((acc, [k, v]) => {
|
|
572
|
+
acc.push(...Object.keys(v ?? {}));
|
|
573
|
+
return acc;
|
|
574
|
+
}, []);
|
|
575
|
+
case 'bigquery': {
|
|
576
|
+
const paths = [];
|
|
577
|
+
for (const key in s?.schema) {
|
|
578
|
+
if (s?.schema.hasOwnProperty(key)) {
|
|
579
|
+
const subObj = s?.schema[key];
|
|
580
|
+
for (const subKey in subObj) {
|
|
581
|
+
if (subObj.hasOwnProperty(subKey)) {
|
|
582
|
+
paths.push(`${key}.${subKey}`);
|
|
583
|
+
}
|
|
584
|
+
}
|
|
585
|
+
}
|
|
586
|
+
}
|
|
587
|
+
return paths;
|
|
614
588
|
}
|
|
589
|
+
default:
|
|
590
|
+
return [];
|
|
615
591
|
}
|
|
616
|
-
return Renderer;
|
|
617
592
|
}
|