From 5cca5833e94fc4c8a80e210164da09f2a1ceb677 Mon Sep 17 00:00:00 2001 From: HugoCasa Date: Fri, 8 Sep 2023 16:49:47 +0200 Subject: [PATCH] feat: snowflake schema explorer + refactoring (#2260) --- .../lib/components/DBSchemaExplorer.svelte | 84 +++++++++++++++---- frontend/src/lib/components/Editor.svelte | 6 +- frontend/src/lib/components/EditorBar.svelte | 3 +- .../src/lib/components/ModulePreview.svelte | 3 +- .../src/lib/components/ScriptEditor.svelte | 3 + .../InlineScriptEditor.svelte | 8 ++ .../copilot/FlowCopilotStatus.svelte | 2 +- .../lib/components/copilot/ScriptFix.svelte | 3 +- .../lib/components/copilot/ScriptGen.svelte | 6 +- .../flows/content/FlowModuleComponent.svelte | 11 +++ .../components/scriptEditor/LogPanel.svelte | 8 +- frontend/src/lib/stores.ts | 11 +-- 12 files changed, 113 insertions(+), 35 deletions(-) diff --git a/frontend/src/lib/components/DBSchemaExplorer.svelte b/frontend/src/lib/components/DBSchemaExplorer.svelte index 3e747dbcc8..e03218d8e7 100644 --- a/frontend/src/lib/components/DBSchemaExplorer.svelte +++ b/frontend/src/lib/components/DBSchemaExplorer.svelte @@ -1,6 +1,12 @@ {#if SUPPORTED_LANGUAGES.has(lang)} diff --git a/frontend/src/lib/components/copilot/ScriptGen.svelte b/frontend/src/lib/components/copilot/ScriptGen.svelte index 8cef021322..3cf19804fd 100644 --- a/frontend/src/lib/components/copilot/ScriptGen.svelte +++ b/frontend/src/lib/components/copilot/ScriptGen.svelte @@ -34,6 +34,7 @@ export let editor: Editor | SimpleEditor | undefined export let diffEditor: DiffEditor | undefined export let inlineScript = false + export let args: Record // state let funcDesc: string = '' @@ -143,7 +144,8 @@ $: !$generatedCode && hideDiff() $: editor && setSelectionHandler() $: selection && (isEdit = !selection.isEmpty()) - $: dbSchema = $dbSchemas[Object.keys($dbSchemas)[0]] + + $: dbSchema = $dbSchemas[(lang === 'graphql' ? args.api : args.database)?.replace('$res:', '')] {#if $generatedCode.length > 0 && !genLoading} @@ -297,7 +299,7 @@ In order to better generate the script, we pass the selected DB schema to GPT-4.

- {#if dbSchema.lang === 'postgresql'} + {#if dbSchema.lang !== 'graphql' && (dbSchema.schema?.public || dbSchema.schema?.PUBLIC)} diff --git a/frontend/src/lib/components/flows/content/FlowModuleComponent.svelte b/frontend/src/lib/components/flows/content/FlowModuleComponent.svelte index bcbb478214..dcf65711a3 100644 --- a/frontend/src/lib/components/flows/content/FlowModuleComponent.svelte +++ b/frontend/src/lib/components/flows/content/FlowModuleComponent.svelte @@ -210,6 +210,10 @@ iconOnly={width < 850} kind={scriptKind} template={scriptTemplate} + args={Object.entries(flowModule.value.input_transforms).reduce((acc, [key, obj]) => { + acc[key] = obj.type === 'static' ? obj.value : undefined + return acc + }, {})} /> {/if} @@ -254,6 +258,13 @@ saveDraft() }} fixedOverflowWidgets={true} + args={Object.entries(flowModule.value.input_transforms).reduce( + (acc, [key, obj]) => { + acc[key] = obj.type === 'static' ? obj.value : undefined + return acc + }, + {} + )} /> | undefined = undefined type DrawerContent = { mode: 'json' | Preview.language | 'plain' @@ -99,12 +100,13 @@ result={previewJob.result} > - {#if lang && editor && diffEditor && previewJob?.result?.error} + {#if lang && editor && diffEditor && args && previewJob?.result?.error} {/if} @@ -137,7 +139,9 @@ {#each pastPreviews as { id, created_at, success, result }} - {id.substring(30)} + {id.substring(30)} {displayDate(created_at)} diff --git a/frontend/src/lib/stores.ts b/frontend/src/lib/stores.ts index a6b9fc2175..800064f21a 100644 --- a/frontend/src/lib/stores.ts +++ b/frontend/src/lib/stores.ts @@ -82,14 +82,9 @@ type SQLBaseSchema = { } export interface SQLSchema { - lang: 'mysql' | 'bigquery' + lang: 'mysql' | 'bigquery' | 'postgresql' | 'snowflake' schema: SQLBaseSchema -} - -export interface PostgresqlSchema { - lang: 'postgresql' - schema: SQLBaseSchema - publicOnly: boolean + publicOnly: boolean | undefined } export interface GraphqlSchema { @@ -97,7 +92,7 @@ export interface GraphqlSchema { schema: IntrospectionQuery } -export type DBSchema = SQLSchema | PostgresqlSchema | GraphqlSchema +export type DBSchema = SQLSchema | GraphqlSchema interface DBSchemas { [resourcePath: string]: DBSchema