fix(sqlserver): suggest database names in query completion

This commit is contained in:
guoyongchang authored and GitHub committed 2026-07-30 15:49:01 +08:00
1 parent 3285cb21a4
commit 79873443e4
9 files changed
+284 -45

No files matched your search

@@ -725,6 +725,32 @@ describe("connectionStore completion assistant", () => {
expect(listDatabases).toHaveBeenCalledTimes(52);
});
it("invalidates cached completion databases for a connection", async () => {
const listDatabases = vi
.fn()
.mockResolvedValueOnce([{ name: "Archive" }])
.mockResolvedValueOnce([{ name: "Reporting" }]);
vi.doMock("@/lib/backend/tauriRuntime", () => ({ isTauriRuntime: () => false }));
vi.doMock("@/lib/backend/api", () => ({
checkConnectionHealth: vi.fn().mockResolvedValue(undefined),
listDatabases,
}));
const { useConnectionStore } = await import("@/stores/connectionStore");
const store = useConnectionStore();
store.connections = [sqlServerConnection()];
store.connectedIds.add("sqlserver-1");
expect(await store.listCompletionDatabases("sqlserver-1")).toEqual(["Archive"]);
expect(await store.listCompletionDatabases("sqlserver-1")).toEqual(["Archive"]);
store.invalidateCompletionCache("sqlserver-1");
expect(await store.listCompletionDatabases("sqlserver-1")).toEqual(["Reporting"]);
expect(listDatabases).toHaveBeenCalledTimes(2);
});
it("evicts old completion schema entries", async () => {
const listSchemas = vi.fn(async (_connectionId: string, database: string) => [`schema_${database}`]);
@@ -2272,6 +2272,7 @@ export const useConnectionStore = defineStore("connection", () => {
function invalidateCompletionCache(connectionId: string, database?: string) {
invalidateMetadataCaches({ connectionId, database });
if (database == null) delete completionDatabasesCache.value[connectionId];
const cachePrefix = database == null ? `${connectionId}:` : `${connectionId}:${database}:`;
const exactCacheKey = database == null ? null : `${connectionId}:${database}`;
for (const key of Object.keys(completionTablesCache.value)) {