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

@@ -16,6 +16,29 @@ function findExactName(names: readonly string[] | undefined, value: string): str
return names?.find((name) => name.toLowerCase() === value.toLowerCase());
}
function findCaseSensitiveName(names: readonly string[] | undefined, value: string): string | undefined {
return names?.find((name) => name === value);
}
export function mergeSqlCompletionQualifierNames(primary: readonly string[], secondary: readonly string[]): string[] {
return [...new Set([...primary, ...secondary])];
}
export function resolveSqlCompletionSchemaLookupDatabase(options: {
supportsDatabaseSchemaQualifier?: boolean;
completionContext: Pick<SqlCompletionContext, "qualifier" | "qualifierParts" | "suggestTables" | "insertTable">;
knownDatabases?: readonly string[];
knownSchemas?: readonly string[];
}): string | undefined {
const { completionContext } = options;
if (!options.supportsDatabaseSchemaQualifier || !completionContext.suggestTables || completionContext.insertTable) return undefined;
const qualifier = completionContext.qualifier?.trim();
const qualifierParts = completionContext.qualifierParts?.filter(Boolean) ?? qualifier?.split(".").filter(Boolean) ?? [];
if (qualifierParts.length !== 1) return undefined;
if (findCaseSensitiveName(options.knownSchemas, qualifierParts[0]!)) return undefined;
return findCaseSensitiveName(options.knownDatabases, qualifierParts[0]!);
}
export function resolveSqlCompletionTableLookupTarget(options: {
currentDatabase: string;
currentSchema?: string;