fix(sqlserver): suggest database names in query completion
This commit is contained in:
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;
|
||||
|
||||
Reference in new issue
Block a user