fix(schema-diff): guard deploy script execution

This commit is contained in:
skyler authored and GitHub committed 2026-08-30 10:35:08 +08:00
1 parent 469bd88c37
commit f664918e95
6 files changed
+125 -18

No files matched your search

@@ -51,6 +51,7 @@ import {
type CompatibilityWarning,
type PermissionDiff,
type DependencyGraph,
normalizeSchemaDiffDependencyGraph,
} from "@/lib/schema/schemaDiff";
import { compileSchemaDiffTableFilter, filterSchemaDiffTables } from "@/lib/schema/schemaDiffTableFilter";
import { Splitpanes, Pane } from "splitpanes";
@@ -593,7 +594,7 @@ async function handleCompare() {
renameCandidates.value = result.renameCandidates ?? [];
compatibilityWarnings.value = result.compatibilityWarnings ?? [];
permissionDiffs.value = result.permissionDiffs ?? [];
dependencyGraph.value = result.dependencyGraph ?? null;
dependencyGraph.value = normalizeSchemaDiffDependencyGraph(result.dependencyGraph);
// Convert to unified objects
diffObjects.value = convertToSchemaDiffObjects(result.diffs, result.functionDiffs, result.sequenceDiffs, result.ruleDiffs, result.ownerDiffs, result.renameCandidates);
@@ -686,13 +687,19 @@ function formatSchemaSyncPlan(plan: Awaited<ReturnType<typeof api.generateSchema
return { forwardSql, rollbackSql: nextRollbackSql };
}
function clearSelectedDeploySql() {
selectedForwardDeploySql.value = "";
selectedDeploySql.value = "";
rollbackSql.value = "";
rollbackCompleteness.value = "complete";
missingRollbackObjects.value = [];
}
async function regenerateSelectedDeploySql() {
const result = lastDiffResult.value;
const generation = ++selectedDeploySqlGeneration;
clearSelectedDeploySql();
if (!result) {
selectedForwardDeploySql.value = "-- No objects selected";
selectedDeploySql.value = "-- No objects selected";
rollbackSql.value = "";
return;
}
@@ -718,10 +725,10 @@ async function regenerateSelectedDeploySql() {
async function regenerateFocusedDeploySql(objectId: string | null = selectedObjectId.value) {
const result = lastDiffResult.value;
const generation = ++focusedDeploySqlGeneration;
focusedForwardDeploySql.value = "";
focusedRollbackSql.value = "";
focusedDeploySql.value = "";
if (!result || !objectId || !findSchemaDiffObject(diffObjects.value, objectId)) {
focusedForwardDeploySql.value = "-- No objects selected";
focusedRollbackSql.value = "";
focusedDeploySql.value = "-- No objects selected";
return;
}
@@ -759,7 +766,8 @@ const canExecuteDeploy = computed(() => {
if (deploySqlMode.value === "rollback" && rollbackCompleteness.value === "incomplete") {
return false;
}
return true;
const sql = selectedDeploySql.value.trim();
return sql.length > 0 && sql !== "-- No objects selected";
});
const destructiveStatements = computed(() => {