diff --git a/apps/studio/components/interfaces/SQLEditor/MonacoEditor.tsx b/apps/studio/components/interfaces/SQLEditor/MonacoEditor.tsx index 7ba06a2e053..788d41c5e41 100644 --- a/apps/studio/components/interfaces/SQLEditor/MonacoEditor.tsx +++ b/apps/studio/components/interfaces/SQLEditor/MonacoEditor.tsx @@ -205,7 +205,8 @@ const MonacoEditor = ({ useEffect(() => { if (debouncedValue.length > 0 && snippet) { - snapV2.setSql(id, value) + const shouldInvalidate = snippet.snippet.isNotSavedInDatabaseYet + snapV2.setSql({ id, sql: value, shouldInvalidate }) } // eslint-disable-next-line react-hooks/exhaustive-deps }, [debouncedValue]) diff --git a/apps/studio/components/interfaces/SQLEditor/SQLEditor.tsx b/apps/studio/components/interfaces/SQLEditor/SQLEditor.tsx index 292d31f670a..e2de14c3717 100644 --- a/apps/studio/components/interfaces/SQLEditor/SQLEditor.tsx +++ b/apps/studio/components/interfaces/SQLEditor/SQLEditor.tsx @@ -248,7 +248,7 @@ export const SQLEditor = () => { range: editorModel.getFullModelRange(), }, ]) - snapV2.setSql(id, formattedSql) + snapV2.setSql({ id, sql: formattedSql }) } } }, [id, isDiffOpen, project, snapV2]) diff --git a/apps/studio/components/interfaces/SQLEditor/useAddDefinitions.ts b/apps/studio/components/interfaces/SQLEditor/useAddDefinitions.ts index d84d9a22b47..7aeebb18384 100644 --- a/apps/studio/components/interfaces/SQLEditor/useAddDefinitions.ts +++ b/apps/studio/components/interfaces/SQLEditor/useAddDefinitions.ts @@ -78,7 +78,7 @@ export const useAddDefinitions = (id: string, monaco: Monaco | null) => { async provideDocumentFormattingEdits(model) { const value = model.getValue() const formatted = formatSql(value) - if (id) snapV2.setSql(id, formatted) + if (id) snapV2.setSql({ id, sql: formatted }) return [{ range: model.getFullModelRange(), text: formatted }] }, }) diff --git a/apps/studio/state/sql-editor-v2.ts b/apps/studio/state/sql-editor-v2.ts index 646ec66ebbf..28e74016f39 100644 --- a/apps/studio/state/sql-editor-v2.ts +++ b/apps/studio/state/sql-editor-v2.ts @@ -115,11 +115,19 @@ export const sqlEditorState = proxy({ } }, - setSql: (id: string, sql: string) => { + setSql: ({ + id, + sql, + shouldInvalidate = false, + }: { + id: string + sql: string + shouldInvalidate?: boolean + }) => { let snippet = sqlEditorState.snippets[id]?.snippet if (snippet?.content) { snippet.content.sql = sql - sqlEditorState.needsSaving.set(id, false) + sqlEditorState.needsSaving.set(id, shouldInvalidate) } },