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
|