fix(elasticsearch): complete mapping fields in Query DSL field slots
This commit is contained in:
1 parent
dd84e6c06a
commit
c0d6965b5f
5 files changed
+628
-58
No files matched your search
@@ -88,7 +88,15 @@ import { driverProfileHasCompletionCandidates } from "@/lib/database/driverProfi
|
||||
import { sqlCompletionContextFromSemantic, sqlSemanticSelectStarIsOnlyProjection, sqlSemanticSelectStarQualifierSql, sqlSemanticSelectStarTableSources } from "@/lib/sql/semantic/completion";
|
||||
import { buildSqlSemanticModel } from "@/lib/sql/semantic/model";
|
||||
import { mergeSqlSemanticReferenceAnalysis, resolveSqlSemanticNavigationTarget } from "@/lib/sql/semantic/references";
|
||||
import { buildElasticsearchCompletionItemsFromContext, getElasticsearchCompletionContext, getElasticsearchCompletionResultValidFor, shouldAutoOpenElasticsearchCompletion, type ElasticsearchCompletionItem } from "@/lib/elasticsearch/elasticsearchCompletion";
|
||||
import {
|
||||
buildElasticsearchCompletionItemsFromContext,
|
||||
elasticsearchCompletionNeedsFields,
|
||||
getElasticsearchCompletionContext,
|
||||
getElasticsearchCompletionResultValidFor,
|
||||
shouldAutoOpenElasticsearchCompletion,
|
||||
type ElasticsearchCompletionField,
|
||||
type ElasticsearchCompletionItem,
|
||||
} from "@/lib/elasticsearch/elasticsearchCompletion";
|
||||
import { buildMongoCompletionItemsFromContext, getMongoCompletionContext, getMongoCompletionResultValidFor, mongoCompletionNeedsCollections, mongoCompletionNeedsFields, shouldAutoOpenMongoCompletion, type MongoCompletionItem } from "@/lib/mongo/mongoCompletion";
|
||||
import {
|
||||
buildSqlServerUseDatabaseCompletionItems,
|
||||
@@ -4526,9 +4534,11 @@ function shouldApplyCompletionAsSnippet(item: QueryCompletionItem): boolean {
|
||||
function completionOptionForItem(item: QueryCompletionItem | BatchColumnSelectionActionItem) {
|
||||
const filterText = "filterText" in item && typeof item.filterText === "string" ? item.filterText : undefined;
|
||||
const labelPresentation = completionLabelPresentation(item.label, filterText);
|
||||
const sortText = "sortText" in item && typeof item.sortText === "string" ? item.sortText : labelPresentation.sortText;
|
||||
if (isBatchColumnSelectionAction(item)) {
|
||||
return {
|
||||
...labelPresentation,
|
||||
...(sortText ? { sortText } : {}),
|
||||
dbxBatchColumnSelectionAction: { sessionKey: item.sessionKey },
|
||||
type: item.type,
|
||||
detail: item.detail,
|
||||
@@ -4545,6 +4555,7 @@ function completionOptionForItem(item: QueryCompletionItem | BatchColumnSelectio
|
||||
if (shouldApplyCompletionAsSnippet(item) && item.apply) {
|
||||
const completion = codeMirrorSnippetCompletion(item.apply, {
|
||||
...labelPresentation,
|
||||
...(sortText ? { sortText } : {}),
|
||||
type: item.type,
|
||||
detail: item.detail,
|
||||
info: item.info,
|
||||
@@ -4578,6 +4589,7 @@ function completionOptionForItem(item: QueryCompletionItem | BatchColumnSelectio
|
||||
}
|
||||
return cacheBatchColumnSelectionOption(batchColumnSelection, {
|
||||
...labelPresentation,
|
||||
...(sortText ? { sortText } : {}),
|
||||
...(batchColumnSelection ? { dbxBatchColumnSelection: batchColumnSelection } : {}),
|
||||
type: item.type,
|
||||
detail: item.detail,
|
||||
@@ -4612,6 +4624,7 @@ async function provideElasticsearchCompletions(currentState: import("@codemirror
|
||||
|
||||
const completionContext = getElasticsearchCompletionContext(fullDoc, position);
|
||||
let indices: string[] = [];
|
||||
let fields: ElasticsearchCompletionField[] = [];
|
||||
if (props.database != null && completionContext.mode === "path") {
|
||||
try {
|
||||
indices = await connectionStore.listElasticsearchCompletionIndices(props.connectionId, props.database);
|
||||
@@ -4619,9 +4632,16 @@ async function provideElasticsearchCompletions(currentState: import("@codemirror
|
||||
indices = [];
|
||||
}
|
||||
}
|
||||
if (elasticsearchCompletionNeedsFields(completionContext) && completionContext.index) {
|
||||
try {
|
||||
fields = await connectionStore.listElasticsearchCompletionFields(props.connectionId, completionContext.index);
|
||||
} catch {
|
||||
fields = [];
|
||||
}
|
||||
}
|
||||
if (epoch !== completionEpoch) return null;
|
||||
|
||||
const items = buildElasticsearchCompletionItemsFromContext(completionContext, { indices });
|
||||
const items = buildElasticsearchCompletionItemsFromContext(completionContext, { indices, fields });
|
||||
return buildCompletionResult(items, completionContext.from, getElasticsearchCompletionResultValidFor());
|
||||
}
|
||||
|
||||
|
||||
Reference in new issue
Block a user