windmill-components 1.511.1 → 1.522.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/package/components/AppConnectInner.svelte.d.ts +1 -1
- package/package/components/ArgInput.svelte +42 -14
- package/package/components/ArgInput.svelte.d.ts +2 -10
- package/package/components/AssignableTagsInner.svelte +5 -0
- package/package/components/AuthSettings.svelte +4 -2
- package/package/components/AuthSettings.svelte.d.ts +1 -0
- package/package/components/DBManagerDrawer.svelte +154 -151
- package/package/components/DBManagerDrawer.svelte.d.ts +2 -2
- package/package/components/DBTable.svelte +3 -3
- package/package/components/DBTable.svelte.d.ts +1 -0
- package/package/components/DBTableEditor.svelte +7 -7
- package/package/components/DBTableEditor.svelte.d.ts +1 -1
- package/package/components/DeployWorkspace.svelte +1 -1
- package/package/components/DisplayResult.svelte +34 -8
- package/package/components/DisplayResult.svelte.d.ts +4 -1
- package/package/components/DynSelect.svelte +58 -34
- package/package/components/DynSelect.svelte.d.ts +3 -11
- package/package/components/EditableSchemaForm.svelte +126 -6
- package/package/components/EditableSchemaForm.svelte.d.ts +5 -1
- package/package/components/Editor.svelte +1 -1
- package/package/components/EditorBar.svelte +82 -4
- package/package/components/ErrorOrRecoveryHandler.svelte +76 -8
- package/package/components/ErrorOrRecoveryHandler.svelte.d.ts +2 -1
- package/package/components/ExploreAssetButton.svelte +14 -4
- package/package/components/ExploreAssetButton.svelte.d.ts +1 -0
- package/package/components/FlowJobResult.svelte +3 -3
- package/package/components/FlowJobResult.svelte.d.ts +1 -0
- package/package/components/FlowPreviewContent.svelte +9 -1
- package/package/components/FlowPreviewResult.svelte +4 -1
- package/package/components/FlowPreviewResult.svelte.d.ts +1 -0
- package/package/components/FlowStatusViewerInner.svelte +21 -3
- package/package/components/FlowStatusViewerInner.svelte.d.ts +7 -1
- package/package/components/FolderEditor.svelte +1 -1
- package/package/components/GitDiffPreview.svelte +14 -18
- package/package/components/GitDiffPreview.svelte.d.ts +2 -8
- package/package/components/GitHubAppIntegration.svelte +3 -1
- package/package/components/IdEditorInput.svelte +25 -22
- package/package/components/IdEditorInput.svelte.d.ts +11 -23
- package/package/components/InstanceSetting.svelte +7 -2
- package/package/components/InstanceSettings.svelte +1 -0
- package/package/components/JobLoader.svelte +48 -5
- package/package/components/JobLoader.svelte.d.ts +7 -2
- package/package/components/Login.svelte +8 -2
- package/package/components/MemoryFootprintViewer.svelte +1 -1
- package/package/components/ModulePreviewResultViewer.svelte +2 -2
- package/package/components/MoveDrawer.svelte.d.ts +2 -2
- package/package/components/NextcloudSetting.svelte +84 -0
- package/package/components/NextcloudSetting.svelte.d.ts +7 -0
- package/package/components/ObjectResourceInput.svelte +3 -2
- package/package/components/ObjectResourceInput.svelte.d.ts +1 -0
- package/package/components/ParqetCsvTableRenderer.svelte +1 -1
- package/package/components/ResourceEditor.svelte +1 -1
- package/package/components/ResourcePicker.svelte +8 -1
- package/package/components/ResourcePicker.svelte.d.ts +1 -0
- package/package/components/ResultStreamDisplay.svelte +5 -0
- package/package/components/ResultStreamDisplay.svelte.d.ts +5 -0
- package/package/components/RunForm.svelte +9 -1
- package/package/components/SchemaForm.svelte +2 -2
- package/package/components/SchemaForm.svelte.d.ts +2 -10
- package/package/components/ScriptBuilder.svelte +13 -8
- package/package/components/ScriptBuilder.svelte.d.ts +1 -1
- package/package/components/ScriptEditor.svelte.d.ts +1 -1
- package/package/components/ScriptWrapper.svelte +1 -1
- package/package/components/ShareModal.svelte.d.ts +1 -1
- package/package/components/SimpleAgTable.svelte +2 -0
- package/package/components/SimpleAgTable.svelte.d.ts +2 -0
- package/package/components/SqlRepl.svelte +21 -7
- package/package/components/SqlRepl.svelte.d.ts +2 -2
- package/package/components/StringTypeNarrowing.svelte.d.ts +1 -1
- package/package/components/WorkerTagSelect.svelte +70 -1
- package/package/components/apps/components/display/AppDisplayComponent.svelte +13 -1
- package/package/components/apps/components/display/AppText.svelte +2 -2
- package/package/components/apps/components/display/dbtable/AppDbExplorer.svelte +8 -1
- package/package/components/apps/components/display/dbtable/InsertRow.svelte +5 -4
- package/package/components/apps/components/display/dbtable/queries/count.js +11 -1
- package/package/components/apps/components/display/dbtable/queries/createTable.d.ts +1 -1
- package/package/components/apps/components/display/dbtable/queries/createTable.js +3 -3
- package/package/components/apps/components/display/dbtable/queries/delete.js +7 -0
- package/package/components/apps/components/display/dbtable/queries/insert.js +2 -0
- package/package/components/apps/components/display/dbtable/queries/select.js +14 -0
- package/package/components/apps/components/display/dbtable/queries/update.js +7 -0
- package/package/components/apps/components/display/dbtable/utils.d.ts +6 -5
- package/package/components/apps/components/display/dbtable/utils.js +52 -28
- package/package/components/apps/components/display/table/AppAggridExplorerTable.svelte +1 -1
- package/package/components/apps/components/display/table/AppAggridInfiniteTable.svelte +1 -0
- package/package/components/apps/components/display/table/AppAggridInfiniteTable.svelte.d.ts +1 -0
- package/package/components/apps/components/display/table/AppAggridTable.svelte +5 -4
- package/package/components/apps/components/display/table/AppAggridTable.svelte.d.ts +1 -0
- package/package/components/apps/components/display/table/utils.js +7 -4
- package/package/components/apps/components/helpers/HiddenComponent.svelte +2 -2
- package/package/components/apps/components/helpers/RunnableComponent.svelte +4 -1
- package/package/components/apps/components/helpers/RunnableComponent.svelte.d.ts +2 -1
- package/package/components/apps/components/inputs/AppS3FileInput.svelte +2 -2
- package/package/components/apps/components/layout/AppDecisionTree.svelte +1 -1
- package/package/components/apps/components/layout/AppStepper.svelte +1 -1
- package/package/components/apps/components/layout/AppTabs.svelte +1 -1
- package/package/components/apps/editor/AppEditorHeader.svelte +13 -2
- package/package/components/apps/editor/GridViewer.svelte +1 -0
- package/package/components/apps/editor/RunnableJobPanelInner.svelte +2 -1
- package/package/components/apps/editor/contextPanel/components/IdEditor.svelte +7 -7
- package/package/components/apps/editor/contextPanel/components/IdEditor.svelte.d.ts +7 -19
- package/package/components/apps/editor/contextPanel/components/OutputHeader.svelte +8 -12
- package/package/components/apps/editor/inlineScriptsPanel/InlineScriptEditor.svelte.d.ts +1 -1
- package/package/components/apps/editor/inlineScriptsPanel/InlineScriptEditorDrawer.svelte.d.ts +1 -1
- package/package/components/apps/editor/inlineScriptsPanel/InlineScriptRunnableByPath.svelte.d.ts +1 -1
- package/package/components/apps/editor/settingsPanel/DecisionTreeGraphEditor.svelte +3 -3
- package/package/components/apps/editor/settingsPanel/decisionTree/DecisionTreePreview.svelte +1 -3
- package/package/components/assets/AssetsDropdownButton.svelte +1 -1
- package/package/components/assets/JobAssetsViewer.svelte +2 -2
- package/package/components/assets/lib.js +4 -0
- package/package/components/auditLogs/AuditLogsFilters.svelte +7 -9
- package/package/components/common/button/Button.svelte +4 -3
- package/package/components/common/button/Button.svelte.d.ts +1 -0
- package/package/components/common/confirmationModal/ConfirmationModal.svelte +6 -5
- package/package/components/common/confirmationModal/ConfirmationModal.svelte.d.ts +6 -11
- package/package/components/common/confirmationModal/asyncConfirmationModal.svelte.d.ts +26 -0
- package/package/components/common/confirmationModal/asyncConfirmationModal.svelte.js +50 -0
- package/package/components/common/modal/Modal.svelte +2 -5
- package/package/components/common/tabs/TabsV2.svelte +2 -1
- package/package/components/common/tabs/TabsV2.svelte.d.ts +1 -0
- package/package/components/copilot/chat/AIChatManager.svelte.js +61 -7
- package/package/components/copilot/chat/ContextTextarea.svelte +1 -1
- package/package/components/copilot/chat/script/core.js +28 -29
- package/package/components/copilot/chat/shared.d.ts +1 -1
- package/package/components/copilot/chat/shared.js +8 -2
- package/package/components/custom_ui.d.ts +2 -0
- package/package/components/dbOps.d.ts +20 -8
- package/package/components/dbOps.js +85 -40
- package/package/components/details/DetailPageHeader.svelte +0 -2
- package/package/components/flows/content/FlowInput.svelte +5 -0
- package/package/components/flows/content/FlowModuleScript.svelte +0 -1
- package/package/components/flows/idUtils.js +2 -1
- package/package/components/flows/map/FlowModuleSchemaItem.svelte +3 -3
- package/package/components/flows/map/FlowModuleSchemaMap.svelte +5 -0
- package/package/components/flows/map/InsertModuleButton.svelte +4 -1
- package/package/components/flows/propPicker/OutputBadge.svelte +5 -1
- package/package/components/flows/propPicker/OutputPickerInner.svelte +9 -5
- package/package/components/flows/propPicker/OutputPickerInner.svelte.d.ts +6 -2
- package/package/components/flows/propPicker/StepHistory.svelte +4 -1
- package/package/components/git_sync/DetectionFlow.svelte +202 -0
- package/package/components/git_sync/DetectionFlow.svelte.d.ts +6 -0
- package/package/components/git_sync/GitSyncContext.svelte.d.ts +82 -0
- package/package/components/git_sync/GitSyncContext.svelte.js +461 -0
- package/package/components/git_sync/GitSyncModalManager.svelte +99 -0
- package/package/components/git_sync/GitSyncModalManager.svelte.d.ts +18 -0
- package/package/components/git_sync/GitSyncRepositoryCard.svelte +339 -0
- package/package/components/git_sync/GitSyncRepositoryCard.svelte.d.ts +6 -0
- package/package/components/git_sync/GitSyncRepositoryList.svelte +17 -0
- package/package/components/git_sync/GitSyncRepositoryList.svelte.d.ts +18 -0
- package/package/components/git_sync/GitSyncSection.svelte +89 -0
- package/package/components/git_sync/GitSyncSection.svelte.d.ts +3 -0
- package/package/components/git_sync/GitSyncSuccessModal.svelte +58 -0
- package/package/components/git_sync/GitSyncSuccessModal.svelte.d.ts +7 -0
- package/package/components/git_sync/PullWorkspaceModal.svelte +575 -0
- package/package/components/git_sync/PullWorkspaceModal.svelte.d.ts +15 -0
- package/package/components/git_sync/PushWorkspaceModal.svelte +320 -0
- package/package/components/git_sync/PushWorkspaceModal.svelte.d.ts +12 -0
- package/package/components/graph/FlowGraphV2.svelte +5 -1
- package/package/components/graph/graphBuilder.svelte.js +1 -1
- package/package/components/graph/renderers/nodes/AssetNode.svelte +4 -4
- package/package/components/icons/AssetDucklakeIcon.svelte +28 -0
- package/package/components/icons/AssetDucklakeIcon.svelte.d.ts +9 -0
- package/package/components/icons/AssetGenericIcon.svelte +3 -0
- package/package/components/icons/DucklakeIcon.svelte +18 -0
- package/package/components/icons/DucklakeIcon.svelte.d.ts +6 -0
- package/package/components/instanceSettings.js +11 -3
- package/package/components/runs/JobPreview.svelte +2 -2
- package/package/components/runs/NoWorkerWithTagWarning.svelte +3 -3
- package/package/components/runs/RunsFilter.svelte.d.ts +1 -1
- package/package/components/schema/FlowPropertyEditor.svelte +3 -2
- package/package/components/schema/FlowPropertyEditor.svelte.d.ts +1 -1
- package/package/components/schema/PropertyEditor.svelte +0 -2
- package/package/components/schema/PropertyEditor.svelte.d.ts +1 -1
- package/package/components/schema/SchemaFormDND.svelte +2 -1
- package/package/components/schema/SchemaFormDND.svelte.d.ts +2 -0
- package/package/components/scriptEditor/LogPanel.svelte +5 -3
- package/package/components/scriptEditor/LogPanel.svelte.d.ts +5 -1
- package/package/components/select/Select.svelte +7 -4
- package/package/components/select/Select.svelte.d.ts +5 -0
- package/package/components/select/SelectDropdown.svelte +2 -1
- package/package/components/select/SelectDropdown.svelte.d.ts +3 -0
- package/package/components/sidebar/changelogs.js +5 -0
- package/package/components/table/AutoDataTable.svelte +6 -4
- package/package/components/table/AutoDataTable.svelte.d.ts +1 -0
- package/package/components/table/DataTable.svelte +12 -10
- package/package/components/table/DataTable.svelte.d.ts +1 -0
- package/package/components/triggers/TriggerRetriesAndErrorHandler.svelte.d.ts +2 -2
- package/package/components/triggers/gcp/GcpTriggerEditorConfigSection.svelte +1 -1
- package/package/components/triggers/gcp/GcpTriggerEditorConfigSection.svelte.d.ts +2 -1
- package/package/components/triggers/gcp/GcpTriggerEditorInner.svelte +50 -11
- package/package/components/triggers/gcp/utils.js +1 -0
- package/package/components/triggers/http/utils.js +1 -1
- package/package/components/triggers/kafka/utils.js +1 -1
- package/package/components/triggers/mqtt/utils.js +1 -1
- package/package/components/triggers/nats/utils.js +1 -1
- package/package/components/triggers/postgres/utils.js +1 -1
- package/package/components/triggers/sqs/utils.js +1 -1
- package/package/components/triggers/utils.js +2 -1
- package/package/components/triggers/webhook/WebhooksConfigSection.svelte +24 -26
- package/package/components/triggers/webhook/WebhooksPanel.svelte +1 -15
- package/package/components/triggers/websocket/utils.js +1 -1
- package/package/components/workspaceSettings/AISettings.svelte +52 -36
- package/package/components/workspaceSettings/DucklakeSettings.svelte +321 -0
- package/package/components/workspaceSettings/DucklakeSettings.svelte.d.ts +23 -0
- package/package/components/workspaceSettings/GitSyncFilterSettings.svelte +122 -499
- package/package/components/workspaceSettings/GitSyncFilterSettings.svelte.d.ts +8 -10
- package/package/consts.js +2 -1
- package/package/gen/core/OpenAPI.js +1 -1
- package/package/gen/schemas.gen.d.ts +7 -6
- package/package/gen/schemas.gen.js +7 -6
- package/package/gen/services.gen.d.ts +19 -1
- package/package/gen/services.gen.js +38 -0
- package/package/gen/types.gen.d.ts +78 -3
- package/package/git-sync.d.ts +36 -0
- package/package/git-sync.js +1 -0
- package/package/hub.d.ts +1 -0
- package/package/hubPaths.json +5 -2
- package/package/infer.js +3 -2
- package/package/script_helpers.d.ts +2 -2
- package/package/script_helpers.js +29 -11
- package/package/services/JobManager.d.ts +28 -0
- package/package/services/JobManager.js +114 -0
- package/package/stores.d.ts +1 -1
- package/package/utils.d.ts +18 -1
- package/package/utils.js +55 -2
- package/package.json +5 -4
- package/package/components/InitGitRepoPopover.svelte +0 -410
- package/package/components/InitGitRepoPopover.svelte.d.ts +0 -13
- package/package/components/PullGitRepoPopover.svelte +0 -355
- package/package/components/PullGitRepoPopover.svelte.d.ts +0 -18
- package/package/inferArgSig.d.ts +0 -42
- package/package/inferArgSig.js +0 -198
|
@@ -30,6 +30,6 @@ declare const AppConnectInner: $$__sveltets_2_IsomorphicComponent<Props, {
|
|
|
30
30
|
loadResourceTypes: () => Promise<void>;
|
|
31
31
|
next: () => Promise<void>;
|
|
32
32
|
back: () => Promise<void>;
|
|
33
|
-
}, "step" | "disabled" | "
|
|
33
|
+
}, "step" | "disabled" | "manual" | "resourceType" | "isGoogleSignin">;
|
|
34
34
|
type AppConnectInner = InstanceType<typeof AppConnectInner>;
|
|
35
35
|
export default AppConnectInner;
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
<script lang="ts">import { preventDefault, stopPropagation, createBubbler } from 'svelte/legacy';
|
|
2
2
|
const bubble = createBubbler();
|
|
3
3
|
import { setInputCat as computeInputCat, debounce, emptyString, getSchemaFromProperties } from '../utils';
|
|
4
|
-
import { DollarSign, Plus, X, Check, Loader2 } from 'lucide-svelte';
|
|
4
|
+
import { DollarSign, Plus, X, Check, Loader2, ExternalLink } from 'lucide-svelte';
|
|
5
5
|
import { createEventDispatcher, onDestroy, onMount, tick, untrack } from 'svelte';
|
|
6
6
|
import { fade } from 'svelte/transition';
|
|
7
7
|
import { Button, SecondsInput } from './common';
|
|
@@ -27,6 +27,7 @@ import DynSelect from './DynSelect.svelte';
|
|
|
27
27
|
import MultiSelect from './select/MultiSelect.svelte';
|
|
28
28
|
import { safeSelectItems } from './select/utils.svelte';
|
|
29
29
|
import S3ArgInput from './common/fileUpload/S3ArgInput.svelte';
|
|
30
|
+
import { base } from '../base';
|
|
30
31
|
let { label = '', value = $bindable(), defaultValue = $bindable(undefined), description = $bindable(undefined), format = $bindable(undefined), contentEncoding = undefined, type = undefined, oneOf = $bindable(undefined), required = false, pattern = $bindable(undefined), valid = $bindable(undefined), enum_ = $bindable(undefined), disabled = false, itemsType = $bindable(undefined), displayHeader = true, properties = $bindable(undefined), nestedRequired = undefined, autofocus = null, compact = false, password = false, pickForField = $bindable(undefined), variableEditor = undefined, itemPicker = undefined, noMargin = false, extra = {}, minW = true, prettifyHeader = false, resourceTypes, disablePortal = false, showSchemaExplorer = false, simpleTooltip = undefined, customErrorMessage = undefined, onlyMaskPassword = false, nullable = false, title = $bindable(undefined), placeholder = $bindable(undefined), order = $bindable(undefined), editor = $bindable(undefined), orderEditable = false, shouldDispatchChanges = false, noDefaultOnSelectFirst = false, helperScript = undefined, otherArgs = {}, lightHeader = false, diffStatus = undefined, hideNested = false, nestedParent = undefined, nestedClasses = '', displayType = true, css = undefined, appPath = undefined, computeS3ForceViewerPolicies = undefined, workspace = undefined, actions } = $props();
|
|
31
32
|
$effect(() => {
|
|
32
33
|
if (description == undefined) {
|
|
@@ -156,7 +157,7 @@ function evalValueToRaw() {
|
|
|
156
157
|
}
|
|
157
158
|
const newRawValue = value == undefined || value == null
|
|
158
159
|
? ''
|
|
159
|
-
: isObjectCat(inputCat)
|
|
160
|
+
: isObjectCat(inputCat) || (inputCat == 'list' && isListJson)
|
|
160
161
|
? JSON.stringify(value, null, 2)
|
|
161
162
|
: isRawStringEditor(inputCat)
|
|
162
163
|
? typeof value == 'string'
|
|
@@ -323,6 +324,32 @@ onDestroy(() => {
|
|
|
323
324
|
});
|
|
324
325
|
</script>
|
|
325
326
|
|
|
327
|
+
{#snippet variableInput()}
|
|
328
|
+
{#if variableEditor}
|
|
329
|
+
<div class="text-sm text-tertiary">
|
|
330
|
+
{#if value && typeof value == 'string' && value?.startsWith('$var:')}
|
|
331
|
+
Linked to variable <button
|
|
332
|
+
class="text-blue-500 underline"
|
|
333
|
+
onclick={() => variableEditor?.editVariable?.(value.slice(5))}>{value.slice(5)}</button
|
|
334
|
+
>
|
|
335
|
+
{/if}
|
|
336
|
+
</div>
|
|
337
|
+
{/if}
|
|
338
|
+
{/snippet}
|
|
339
|
+
{#snippet resourceInput()}
|
|
340
|
+
{#if variableEditor}
|
|
341
|
+
<div class="text-sm text-tertiary">
|
|
342
|
+
{#if value && typeof value == 'string' && value?.startsWith('$res:')}
|
|
343
|
+
Linked to resource <a
|
|
344
|
+
target="_blank"
|
|
345
|
+
href="{base}/resources#/resource/{value.slice(5)}"
|
|
346
|
+
class="text-blue-500 underline"
|
|
347
|
+
>{value.slice(5)} <span class="inline-block -mb-0.5"><ExternalLink size={14} /></span></a
|
|
348
|
+
>
|
|
349
|
+
{/if}
|
|
350
|
+
</div>
|
|
351
|
+
{/if}
|
|
352
|
+
{/snippet}
|
|
326
353
|
<!-- svelte-ignore a11y_autofocus -->
|
|
327
354
|
<div
|
|
328
355
|
class={twMerge(
|
|
@@ -597,6 +624,15 @@ onDestroy(() => {
|
|
|
597
624
|
>{itemsLimit}/{value.length}: Load 50 more...</button
|
|
598
625
|
>
|
|
599
626
|
{/if}
|
|
627
|
+
{:else if typeof value === 'string'}
|
|
628
|
+
{#if value.startsWith('$res:')}
|
|
629
|
+
{@render resourceInput()}
|
|
630
|
+
{:else}
|
|
631
|
+
<div class="text-red-500">
|
|
632
|
+
Invalid string value: "{value}", expected array. Click add item to turn it
|
|
633
|
+
into an array.
|
|
634
|
+
</div>
|
|
635
|
+
{/if}
|
|
600
636
|
{/if}
|
|
601
637
|
{/key}
|
|
602
638
|
</div>
|
|
@@ -657,7 +693,7 @@ onDestroy(() => {
|
|
|
657
693
|
{:else if inputCat == 'dynselect'}
|
|
658
694
|
<DynSelect
|
|
659
695
|
name={label}
|
|
660
|
-
|
|
696
|
+
{otherArgs}
|
|
661
697
|
{helperScript}
|
|
662
698
|
bind:value
|
|
663
699
|
entrypoint={format?.substring('dynselect_'.length) ?? ''}
|
|
@@ -667,6 +703,7 @@ onDestroy(() => {
|
|
|
667
703
|
{:else if inputCat == 'resource-object' && (resourceTypes == undefined || (format && format?.split('-').length > 1 && resourceTypes.includes(format?.substring('resource-'.length))))}
|
|
668
704
|
<!-- {JSON.stringify(value)} -->
|
|
669
705
|
<ObjectResourceInput
|
|
706
|
+
{disabled}
|
|
670
707
|
{defaultValue}
|
|
671
708
|
selectFirst={!noDefaultOnSelectFirst}
|
|
672
709
|
{disablePortal}
|
|
@@ -1067,17 +1104,8 @@ onDestroy(() => {
|
|
|
1067
1104
|
{/if}
|
|
1068
1105
|
{/if}
|
|
1069
1106
|
</div>
|
|
1070
|
-
{
|
|
1071
|
-
|
|
1072
|
-
{#if value && typeof value == 'string' && value?.startsWith('$var:')}
|
|
1073
|
-
Linked to variable <button
|
|
1074
|
-
class="text-blue-500 underline"
|
|
1075
|
-
onclick={() => variableEditor?.editVariable?.(value.slice(5))}
|
|
1076
|
-
>{value.slice(5)}</button
|
|
1077
|
-
>
|
|
1078
|
-
{/if}
|
|
1079
|
-
</div>
|
|
1080
|
-
{/if}
|
|
1107
|
+
{@render variableInput()}
|
|
1108
|
+
{@render resourceInput()}
|
|
1081
1109
|
</div>
|
|
1082
1110
|
{/if}
|
|
1083
1111
|
{@render actions?.()}
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import type { EnumType, SchemaProperty } from '../common';
|
|
2
|
+
import { type DynamicSelect } from '../utils';
|
|
2
3
|
import type ItemPicker from './ItemPicker.svelte';
|
|
3
4
|
import type SimpleEditor from './SimpleEditor.svelte';
|
|
4
5
|
import type VariableEditor from './VariableEditor.svelte';
|
|
5
|
-
import type { Script } from '../gen';
|
|
6
6
|
import type { SchemaDiff } from './schema/schemaUtils.svelte';
|
|
7
7
|
import type { ComponentCustomCSS } from './apps/types';
|
|
8
8
|
interface Props {
|
|
@@ -58,15 +58,7 @@ interface Props {
|
|
|
58
58
|
orderEditable?: boolean;
|
|
59
59
|
shouldDispatchChanges?: boolean;
|
|
60
60
|
noDefaultOnSelectFirst?: boolean;
|
|
61
|
-
helperScript?:
|
|
62
|
-
type: 'inline';
|
|
63
|
-
path?: string;
|
|
64
|
-
lang: Script['language'];
|
|
65
|
-
code: string;
|
|
66
|
-
} | {
|
|
67
|
-
type: 'hash';
|
|
68
|
-
hash: string;
|
|
69
|
-
} | undefined;
|
|
61
|
+
helperScript?: DynamicSelect.HelperScript;
|
|
70
62
|
otherArgs?: Record<string, any>;
|
|
71
63
|
lightHeader?: boolean;
|
|
72
64
|
diffStatus?: SchemaDiff | undefined;
|
|
@@ -86,6 +86,11 @@ loadCustomTags();
|
|
|
86
86
|
>For tags specific to some workspaces, use <pre class="inline">tag(workspace1+workspace2)</pre
|
|
87
87
|
></span
|
|
88
88
|
>
|
|
89
|
+
<span class="text-2xs text-tertiary"
|
|
90
|
+
>To exclude 'workspace1' and 'workspace2' from a tag, use <pre
|
|
91
|
+
class="inline">tag(^workspace1^workspace2)</pre
|
|
92
|
+
></span
|
|
93
|
+
>
|
|
89
94
|
<span class="text-2xs text-tertiary"
|
|
90
95
|
>For dynamic tags based on the workspace, use <pre class="inline">$workspace</pre>, e.g:
|
|
91
96
|
<pre class="inline">tag-$workspace</pre></span
|
|
@@ -10,13 +10,14 @@ import AuthentikSetting from './AuthentikSetting.svelte';
|
|
|
10
10
|
import AutheliaSetting from './AutheliaSetting.svelte';
|
|
11
11
|
import KanidmSetting from './KanidmSetting.svelte';
|
|
12
12
|
import ZitadelSetting from './ZitadelSetting.svelte';
|
|
13
|
+
import NextcloudSetting from './NextcloudSetting.svelte';
|
|
13
14
|
import CustomOauth from './CustomOauth.svelte';
|
|
14
15
|
import { capitalize } from '../utils';
|
|
15
16
|
import Toggle from './Toggle.svelte';
|
|
16
17
|
import { ExternalLink, Plus } from 'lucide-svelte';
|
|
17
18
|
import AzureOauthSettings from './AzureOauthSettings.svelte';
|
|
18
19
|
import Tooltip from './Tooltip.svelte';
|
|
19
|
-
let { snowflakeAccountIdentifier = $bindable(), oauths = $bindable(), requirePreexistingUserForOauth = $bindable(), scim } = $props();
|
|
20
|
+
let { snowflakeAccountIdentifier = $bindable(), oauths = $bindable(), requirePreexistingUserForOauth = $bindable(), baseUrl, scim } = $props();
|
|
20
21
|
$effect(() => {
|
|
21
22
|
if (snowflakeAccountIdentifier == undefined) {
|
|
22
23
|
snowflakeAccountIdentifier = '';
|
|
@@ -97,8 +98,9 @@ let tab = $state('sso');
|
|
|
97
98
|
<AutheliaSetting bind:value={oauths['authelia']} />
|
|
98
99
|
<KanidmSetting bind:value={oauths['kanidm']} />
|
|
99
100
|
<ZitadelSetting bind:value={oauths['zitadel']} />
|
|
101
|
+
<NextcloudSetting bind:value={oauths['nextcloud']} {baseUrl} />
|
|
100
102
|
{#each Object.keys(oauths) as k}
|
|
101
|
-
{#if !['authelia', 'authentik', 'google', 'microsoft', 'github', 'gitlab', 'jumpcloud', 'okta', 'auth0', 'keycloak', 'slack', 'kanidm', 'zitadel'].includes(k) && 'login_config' in oauths[k]}
|
|
103
|
+
{#if !['authelia', 'authentik', 'google', 'microsoft', 'github', 'gitlab', 'jumpcloud', 'okta', 'auth0', 'keycloak', 'slack', 'kanidm', 'zitadel', 'nextcloud'].includes(k) && 'login_config' in oauths[k]}
|
|
102
104
|
{#if oauths[k]}
|
|
103
105
|
<div class="flex flex-col gap-2 pb-4">
|
|
104
106
|
<div class="flex flex-row items-center gap-2">
|
|
@@ -2,6 +2,7 @@ interface Props {
|
|
|
2
2
|
snowflakeAccountIdentifier?: string;
|
|
3
3
|
oauths?: Record<string, any>;
|
|
4
4
|
requirePreexistingUserForOauth?: boolean;
|
|
5
|
+
baseUrl?: string;
|
|
5
6
|
scim?: import('svelte').Snippet;
|
|
6
7
|
}
|
|
7
8
|
declare const AuthSettings: import("svelte").Component<Props, {}, "snowflakeAccountIdentifier" | "oauths" | "requirePreexistingUserForOauth">;
|
|
@@ -6,28 +6,33 @@ import { sendUserToast, sortArray } from '../utils';
|
|
|
6
6
|
import { ArrowLeft, Expand, Loader2, Minimize, RefreshCcw } from 'lucide-svelte';
|
|
7
7
|
import { dbSupportsSchemas, getDbSchemas, getLanguageByResourceType, loadAllTablesMetaData, loadTableMetaData } from './apps/components/display/dbtable/utils';
|
|
8
8
|
import DbManager from './DBManager.svelte';
|
|
9
|
-
import { dbDeleteTableActionWithPreviewScript, dbTableOpsWithPreviewScripts } from './dbOps';
|
|
9
|
+
import { dbDeleteTableActionWithPreviewScript, dbTableOpsWithPreviewScripts, getDucklakeSchema, wrapDucklakeQuery } from './dbOps';
|
|
10
10
|
import { makeCreateTableQuery } from './apps/components/display/dbtable/queries/createTable';
|
|
11
11
|
import { runScriptAndPollResult } from './jobs/utils';
|
|
12
12
|
import { Pane, Splitpanes } from 'svelte-splitpanes';
|
|
13
13
|
import SqlRepl from './SqlRepl.svelte';
|
|
14
14
|
import SimpleAgTable from './SimpleAgTable.svelte';
|
|
15
15
|
import { untrack } from 'svelte';
|
|
16
|
-
let
|
|
17
|
-
let
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
resourceType = _resourceType;
|
|
21
|
-
resourcePath = _resourcePath;
|
|
16
|
+
let input = $state();
|
|
17
|
+
let open = $derived(!!input);
|
|
18
|
+
export function openDrawer(nInput) {
|
|
19
|
+
input = nInput;
|
|
22
20
|
getSchema();
|
|
23
21
|
}
|
|
24
22
|
export function closeDrawer() {
|
|
25
|
-
|
|
26
|
-
resourcePath = undefined;
|
|
23
|
+
input = undefined;
|
|
27
24
|
refreshCount = 0;
|
|
28
25
|
refreshing = false;
|
|
29
26
|
}
|
|
30
|
-
let dbSchema = $derived(
|
|
27
|
+
let dbSchema = $derived(input && $dbSchemas[getDbSchemasPath(input)]);
|
|
28
|
+
function getDbSchemasPath(input) {
|
|
29
|
+
switch (input.type) {
|
|
30
|
+
case 'database':
|
|
31
|
+
return input.resourcePath;
|
|
32
|
+
case 'ducklake':
|
|
33
|
+
return 'ducklake://' + input.ducklake;
|
|
34
|
+
}
|
|
35
|
+
}
|
|
31
36
|
// `refreshCount` is a derived state. `refreshing` is the source of truth
|
|
32
37
|
let refreshCount = $state(0);
|
|
33
38
|
$effect(() => {
|
|
@@ -46,25 +51,29 @@ $effect(() => {
|
|
|
46
51
|
expand = false;
|
|
47
52
|
});
|
|
48
53
|
async function getSchema() {
|
|
49
|
-
if (!
|
|
54
|
+
if (!input)
|
|
50
55
|
return;
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
56
|
+
const dbSchemasPath = getDbSchemasPath(input);
|
|
57
|
+
if ($dbSchemas[dbSchemasPath] && !refreshing)
|
|
58
|
+
return;
|
|
59
|
+
const oldDbSchema = $dbSchemas[dbSchemasPath];
|
|
60
|
+
if (input.type == 'database') {
|
|
61
|
+
await getDbSchemas(input.resourceType, input.resourcePath, $workspaceStore, $dbSchemas, (message) => {
|
|
54
62
|
if (open)
|
|
55
63
|
sendUserToast(message, true);
|
|
56
64
|
});
|
|
57
|
-
// avoid infinite loop on error due to the way getDbSchemas is implemented
|
|
58
|
-
// and relying on an assignement side effect
|
|
59
|
-
if (oldDbSchema !== $dbSchemas[resourcePath])
|
|
60
|
-
$dbSchemas = $dbSchemas;
|
|
61
65
|
}
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
66
|
+
else if (input.type == 'ducklake') {
|
|
67
|
+
$dbSchemas[dbSchemasPath] = await getDucklakeSchema({
|
|
68
|
+
workspace: $workspaceStore,
|
|
69
|
+
ducklake: input.ducklake
|
|
70
|
+
});
|
|
67
71
|
}
|
|
72
|
+
// avoid infinite loop on error due to the way getDbSchemas is implemented
|
|
73
|
+
// and relying on an assignement side effect
|
|
74
|
+
if (oldDbSchema !== $dbSchemas[dbSchemasPath])
|
|
75
|
+
$dbSchemas = $dbSchemas;
|
|
76
|
+
refreshing = false;
|
|
68
77
|
}
|
|
69
78
|
let windowWidth = $state(window.innerWidth);
|
|
70
79
|
let replPanelSize = $state(36);
|
|
@@ -73,22 +82,22 @@ let replResultData = $state(undefined);
|
|
|
73
82
|
let cachedColDefs = {};
|
|
74
83
|
let cachedLastRefreshCount = 0;
|
|
75
84
|
async function getColDefs(tableKey) {
|
|
76
|
-
if (!resourcePath || !resourceType)
|
|
77
|
-
return [];
|
|
78
85
|
if (cachedLastRefreshCount !== refreshCount)
|
|
79
86
|
cachedColDefs = {};
|
|
80
87
|
cachedLastRefreshCount = refreshCount;
|
|
81
|
-
if (cachedColDefs[tableKey])
|
|
88
|
+
if (cachedColDefs[tableKey])
|
|
82
89
|
return cachedColDefs[tableKey];
|
|
83
|
-
|
|
90
|
+
if (!input)
|
|
91
|
+
return [];
|
|
84
92
|
try {
|
|
85
|
-
cachedColDefs =
|
|
86
|
-
(await loadAllTablesMetaData('$res:' + resourcePath, $workspaceStore, resourceType)) ??
|
|
87
|
-
cachedColDefs;
|
|
93
|
+
cachedColDefs = (await loadAllTablesMetaData($workspaceStore, input)) ?? cachedColDefs;
|
|
88
94
|
return cachedColDefs[tableKey];
|
|
89
95
|
}
|
|
90
96
|
catch (e) {
|
|
91
|
-
|
|
97
|
+
if (input?.type == 'ducklake')
|
|
98
|
+
throw 'Impossible that loadAllTablesMetaData fails for Ducklake';
|
|
99
|
+
// Query is not implemented for all dbs, need a fallback
|
|
100
|
+
const result = await loadTableMetaData(input, $workspaceStore, tableKey);
|
|
92
101
|
if (result)
|
|
93
102
|
cachedColDefs[tableKey] = result;
|
|
94
103
|
return result ?? [];
|
|
@@ -113,126 +122,120 @@ async function getColDefs(tableKey) {
|
|
|
113
122
|
preventEscape
|
|
114
123
|
on:close={closeDrawer}
|
|
115
124
|
>
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
{
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
}
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
{
|
|
150
|
-
{/
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
})}
|
|
164
|
-
dbTableActionsFactory={[
|
|
165
|
-
dbDeleteTableActionWithPreviewScript({
|
|
166
|
-
resourcePath,
|
|
167
|
-
resourceType,
|
|
168
|
-
workspace: $workspaceStore
|
|
169
|
-
})
|
|
170
|
-
]}
|
|
171
|
-
{refresh}
|
|
172
|
-
dbTableEditorPropsFactory={({ selectedSchemaKey }) => ({
|
|
173
|
-
resourceType: resourceType!,
|
|
174
|
-
previewSql: (values) =>
|
|
175
|
-
makeCreateTableQuery(values, resourceType!, selectedSchemaKey),
|
|
176
|
-
async onConfirm(values) {
|
|
177
|
-
await runScriptAndPollResult({
|
|
178
|
-
workspace: $workspaceStore,
|
|
179
|
-
requestBody: {
|
|
180
|
-
args: { database: '$res:' + resourcePath },
|
|
181
|
-
content: makeCreateTableQuery(values, resourceType!, selectedSchemaKey),
|
|
182
|
-
language: getLanguageByResourceType(resourceType!)
|
|
183
|
-
}
|
|
184
|
-
})
|
|
185
|
-
refresh()
|
|
186
|
-
}
|
|
125
|
+
<DrawerContent
|
|
126
|
+
title={replResultData ? 'Query Result' : 'Database Manager'}
|
|
127
|
+
on:close={() => {
|
|
128
|
+
if (replResultData) {
|
|
129
|
+
replResultData = undefined
|
|
130
|
+
} else {
|
|
131
|
+
closeDrawer()
|
|
132
|
+
}
|
|
133
|
+
}}
|
|
134
|
+
CloseIcon={replResultData ? ArrowLeft : undefined}
|
|
135
|
+
noPadding
|
|
136
|
+
>
|
|
137
|
+
{#if dbSchema && $workspaceStore && input}
|
|
138
|
+
{@const _input = input}
|
|
139
|
+
{@const dbType = input.type == 'database' ? input.resourceType : 'duckdb'}
|
|
140
|
+
<Splitpanes horizontal>
|
|
141
|
+
<Pane class="relative">
|
|
142
|
+
<!-- svelte-ignore a11y_click_events_have_key_events -->
|
|
143
|
+
<!-- svelte-ignore a11y_no_static_element_interactions -->
|
|
144
|
+
<div
|
|
145
|
+
class={'absolute inset-0 z-10 p-8 ' +
|
|
146
|
+
(replResultData
|
|
147
|
+
? 'bg-surface/90'
|
|
148
|
+
: 'transition-colors bg-transparent pointer-events-none select-none')}
|
|
149
|
+
onclick={(e) => {
|
|
150
|
+
// Only proceed if the click is directly on this div and not on the child elements
|
|
151
|
+
if (e.target === e.currentTarget) {
|
|
152
|
+
replResultData = undefined
|
|
153
|
+
}
|
|
154
|
+
}}
|
|
155
|
+
>
|
|
156
|
+
{#if replResultData}
|
|
157
|
+
{#key replResultData}
|
|
158
|
+
<SimpleAgTable data={replResultData} class="animate-zoom-in" />
|
|
159
|
+
{/key}
|
|
160
|
+
{/if}
|
|
161
|
+
</div>
|
|
162
|
+
<DbManager
|
|
163
|
+
dbSupportsSchemas={input.type == 'database' && dbSupportsSchemas(input.resourceType)}
|
|
164
|
+
{dbSchema}
|
|
165
|
+
{getColDefs}
|
|
166
|
+
dbTableOpsFactory={({ colDefs, tableKey }) =>
|
|
167
|
+
dbTableOpsWithPreviewScripts({
|
|
168
|
+
colDefs,
|
|
169
|
+
tableKey,
|
|
170
|
+
input: _input,
|
|
171
|
+
workspace: $workspaceStore
|
|
187
172
|
})}
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
173
|
+
dbTableActionsFactory={[
|
|
174
|
+
dbDeleteTableActionWithPreviewScript({ input: _input, workspace: $workspaceStore })
|
|
175
|
+
]}
|
|
176
|
+
{refresh}
|
|
177
|
+
dbTableEditorPropsFactory={({ selectedSchemaKey }) => ({
|
|
178
|
+
dbType,
|
|
179
|
+
previewSql: (values) => makeCreateTableQuery(values, dbType, selectedSchemaKey),
|
|
180
|
+
async onConfirm(values) {
|
|
181
|
+
const dbArg =
|
|
182
|
+
input?.type === 'database' ? { database: '$res:' + input.resourcePath } : {}
|
|
183
|
+
const language = getLanguageByResourceType(dbType)
|
|
184
|
+
let query = makeCreateTableQuery(values, dbType, selectedSchemaKey)
|
|
185
|
+
if (input?.type === 'ducklake') query = wrapDucklakeQuery(query, input.ducklake)
|
|
186
|
+
await runScriptAndPollResult({
|
|
187
|
+
workspace: $workspaceStore,
|
|
188
|
+
requestBody: { args: dbArg, content: query, language }
|
|
189
|
+
})
|
|
190
|
+
refresh()
|
|
191
|
+
}
|
|
192
|
+
})}
|
|
193
|
+
/>
|
|
194
|
+
</Pane>
|
|
195
|
+
<Pane bind:size={replPanelSize} minSize={REPL_MIN_SIZE} class="relative">
|
|
196
|
+
<SqlRepl
|
|
197
|
+
{input}
|
|
198
|
+
onData={(data) => {
|
|
199
|
+
replResultData = data
|
|
200
|
+
}}
|
|
201
|
+
placeholderTableName={sortArray(
|
|
202
|
+
Object.keys(
|
|
203
|
+
dbSchema?.schema[
|
|
204
|
+
'public' in dbSchema?.schema
|
|
205
|
+
? 'public'
|
|
206
|
+
: 'dbo' in dbSchema?.schema
|
|
207
|
+
? 'dbo'
|
|
208
|
+
: Object.keys(dbSchema?.schema)?.[0]
|
|
209
|
+
]
|
|
210
|
+
)
|
|
211
|
+
)?.[0]}
|
|
212
|
+
/>
|
|
213
|
+
</Pane>
|
|
214
|
+
</Splitpanes>
|
|
215
|
+
{:else}
|
|
216
|
+
<Splitpanes>
|
|
217
|
+
<Pane class="relative flex justify-center items-center">
|
|
218
|
+
<Loader2 class="animate-spin" size={32} />
|
|
219
|
+
</Pane>
|
|
220
|
+
</Splitpanes>
|
|
221
|
+
{/if}
|
|
222
|
+
{#snippet actions()}
|
|
223
|
+
<Button
|
|
224
|
+
loading={refreshing}
|
|
225
|
+
on:click={() => refresh()}
|
|
226
|
+
startIcon={{ icon: RefreshCcw }}
|
|
227
|
+
size="xs"
|
|
228
|
+
color="light"
|
|
229
|
+
>
|
|
230
|
+
Refresh
|
|
231
|
+
</Button>
|
|
228
232
|
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
{/key}
|
|
233
|
+
<Button
|
|
234
|
+
on:click={() => (expand = !expand)}
|
|
235
|
+
startIcon={{ icon: expand ? Minimize : Expand }}
|
|
236
|
+
size="xs"
|
|
237
|
+
color="light"
|
|
238
|
+
/>
|
|
239
|
+
{/snippet}
|
|
240
|
+
</DrawerContent>
|
|
238
241
|
</Drawer>
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import { type
|
|
1
|
+
import { type DbInput } from './dbOps';
|
|
2
2
|
declare const DbManagerDrawer: import("svelte").Component<Record<string, never>, {
|
|
3
|
-
openDrawer: (
|
|
3
|
+
openDrawer: (nInput: DbInput) => void;
|
|
4
4
|
closeDrawer: () => void;
|
|
5
5
|
}, "">;
|
|
6
6
|
type DbManagerDrawer = ReturnType<typeof DbManagerDrawer>;
|
|
@@ -10,6 +10,7 @@ import DebouncedInput from './apps/components/helpers/DebouncedInput.svelte';
|
|
|
10
10
|
import InsertRowDrawerButton from './apps/components/display/InsertRowDrawerButton.svelte';
|
|
11
11
|
import { deepEqual } from 'fast-equals';
|
|
12
12
|
import 'ag-grid-community/styles/ag-grid.css';
|
|
13
|
+
import 'ag-grid-community/styles/ag-theme-alpine.css';
|
|
13
14
|
import './apps/components/display/table/theme/windmill-theme.css';
|
|
14
15
|
import { untrack } from 'svelte';
|
|
15
16
|
let { dbTableOps } = $props();
|
|
@@ -46,7 +47,7 @@ function mountGrid() {
|
|
|
46
47
|
...(dbTableOps.onUpdate && {
|
|
47
48
|
defaultColDef: {
|
|
48
49
|
flex: 1,
|
|
49
|
-
minWidth:
|
|
50
|
+
minWidth: 150,
|
|
50
51
|
editable: true,
|
|
51
52
|
onCellValueChanged: (e) => {
|
|
52
53
|
if (!$workspaceStore)
|
|
@@ -65,7 +66,6 @@ function mountGrid() {
|
|
|
65
66
|
}
|
|
66
67
|
}),
|
|
67
68
|
onViewportChanged: (e) => ([firstRow, lastRow] = [e.firstRow, e.lastRow]),
|
|
68
|
-
infiniteInitialRowCount: 100,
|
|
69
69
|
cacheBlockSize: 100,
|
|
70
70
|
cacheOverflowSize: 10,
|
|
71
71
|
maxBlocksInCache: 20,
|
|
@@ -130,7 +130,7 @@ function updateGrid() {
|
|
|
130
130
|
{#if dbTableOps.onInsert}
|
|
131
131
|
<InsertRowDrawerButton
|
|
132
132
|
columnDefs={dbTableOps.colDefs ?? []}
|
|
133
|
-
dbType={dbTableOps.
|
|
133
|
+
dbType={dbTableOps.dbType}
|
|
134
134
|
onInsert={(values) => {
|
|
135
135
|
if (!$workspaceStore) return
|
|
136
136
|
dbTableOps.onInsert?.({ values }).then((result) => {
|
|
@@ -46,15 +46,16 @@ import { twMerge } from 'tailwind-merge';
|
|
|
46
46
|
import DarkModeObserver from './DarkModeObserver.svelte';
|
|
47
47
|
import Select from './select/Select.svelte';
|
|
48
48
|
import { safeSelectItems } from './select/utils.svelte';
|
|
49
|
-
const { onConfirm,
|
|
50
|
-
const columnTypes = DB_TYPES[
|
|
49
|
+
const { onConfirm, dbType, previewSql, dbSchema, currentSchema } = $props();
|
|
50
|
+
const columnTypes = DB_TYPES[dbType];
|
|
51
51
|
const defaultColumnType = {
|
|
52
52
|
postgresql: 'VARCHAR',
|
|
53
53
|
snowflake: 'varchar',
|
|
54
54
|
ms_sql_server: 'varchar',
|
|
55
55
|
bigquery: 'string',
|
|
56
|
-
mysql: 'varchar'
|
|
57
|
-
|
|
56
|
+
mysql: 'varchar',
|
|
57
|
+
duckdb: 'string'
|
|
58
|
+
}[dbType];
|
|
58
59
|
const values = $state({
|
|
59
60
|
name: '',
|
|
60
61
|
columns: [],
|
|
@@ -70,7 +71,7 @@ function addColumn({ name, primaryKey }) {
|
|
|
70
71
|
...(primaryKey && { primaryKey })
|
|
71
72
|
});
|
|
72
73
|
}
|
|
73
|
-
addColumn({ name: 'id', primaryKey:
|
|
74
|
+
addColumn({ name: 'id', primaryKey: dbType !== 'duckdb' });
|
|
74
75
|
const errors = $derived(validate(values, dbSchema));
|
|
75
76
|
let askingForConfirmation = $state();
|
|
76
77
|
let darkMode = $state(false);
|
|
@@ -219,8 +220,7 @@ let darkMode = $state(false);
|
|
|
219
220
|
items={getFlatTableNamesFromSchema(dbSchema).map((o) => ({
|
|
220
221
|
value: o,
|
|
221
222
|
label:
|
|
222
|
-
(currentSchema && o.startsWith(currentSchema)) ||
|
|
223
|
-
!dbSupportsSchemas(resourceType)
|
|
223
|
+
(currentSchema && o.startsWith(currentSchema)) || !dbSupportsSchemas(dbType)
|
|
224
224
|
? o.split('.')[1]
|
|
225
225
|
: o
|
|
226
226
|
}))}
|