fix(sql): preserve file associations and list selection

This commit is contained in:
zipg authored and GitHub committed 2026-08-13 11:44:55 +08:00
1 parent 2e27f7a66a
commit e5a3917f7d
25 files changed
+558 -186

No files matched your search

+31 -1
View File
@@ -142,6 +142,7 @@ test("changing a saved SQL execution target persists the latest target", async (
connectionId: "conn-1",
name: "query.sql",
database: "db-1",
catalog: "hive",
schema: "public",
sql: "SELECT 1;",
sqlLoaded: true,
@@ -156,12 +157,14 @@ test("changing a saved SQL execution target persists the latest target", async (
await store.updateFileExecutionTarget("sql-target", {
connectionId: "conn-2",
database: "db-2",
catalog: "iceberg",
schema: "app",
});
const saved = apiMock.saveSavedSqlFile.mock.calls.at(-1)?.[0];
assert.equal(saved?.connectionId, "conn-2");
assert.equal(saved?.database, "db-2");
assert.equal(saved?.catalog, "iceberg");
assert.equal(saved?.schema, "app");
assert.equal(saved?.sql, file.sql);
assert.equal(saved?.name, file.name);
@@ -169,9 +172,10 @@ test("changing a saved SQL execution target persists the latest target", async (
{
connectionId: store.getFile("sql-target")?.connectionId,
database: store.getFile("sql-target")?.database,
catalog: store.getFile("sql-target")?.catalog,
schema: store.getFile("sql-target")?.schema,
},
{ connectionId: "conn-2", database: "db-2", schema: "app" },
{ connectionId: "conn-2", database: "db-2", catalog: "iceberg", schema: "app" },
);
});
@@ -202,6 +206,32 @@ test("rapid saved SQL target changes persist only the latest target", async () =
assert.equal(store.getFile("sql-target")?.connectionId, "conn-3");
});
test("changing only the saved SQL catalog persists the new catalog", async () => {
const file: SavedSqlFile = {
id: "sql-catalog-target",
connectionId: "conn-1",
name: "query.sql",
database: "sales",
catalog: "hive",
sql: "SELECT 1;",
sqlLoaded: true,
createdAt: "2026-06-27T00:00:00.000Z",
updatedAt: "2026-06-27T00:00:00.000Z",
};
apiMock.loadSavedSqlLibrary.mockResolvedValue({ folders: [], files: [file] });
const store = useSavedSqlStore();
await store.initFromStorage();
await store.updateFileExecutionTarget("sql-catalog-target", {
connectionId: "conn-1",
database: "sales",
catalog: "iceberg",
});
assert.equal(apiMock.saveSavedSqlFile.mock.calls.at(-1)?.[0].catalog, "iceberg");
assert.equal(store.getFile("sql-catalog-target")?.catalog, "iceberg");
});
test("saved SQL target changes roll back when persistence fails", async () => {
const file: SavedSqlFile = {
id: "sql-target",