flink-sql-language-server
Version:
A LSP-based language server for Apache Flink SQL
102 lines (101 loc) • 4.49 kB
TypeScript
import { ErrorNode } from 'antlr4ts/tree';
import { CursorQuery } from '../cursor';
import { AlterDatabaseContext, AlterModelContext, AlterTableContext, AlterViewContext, AnalyzeContext, AsDatabaseContext, AutoOptimizeTableContext, ColumnReferenceContext, CreateModelContext, CreateTableContext, DereferenceContext, DescribeCatalogContext, DescribeDatabaseContext, DescribeModelContext, DescribeTableContext, DropDatabaseContext, DropModelContext, DropTableContext, InsertContext, JoinConditionContext, LikeTableContext, MlPredictFunctionArgsContext, MlPredictFunctionNamedArgumentContext, PartitionedByContext, QueryPrimaryContext, ShowCreateModelContext, ShowModelsContext, StatementContext, TableReferenceContext, UseContext } from '../lib/FlinkSQLParser';
import { Named, TableColumnMetadataArgs } from '../metadata.typing';
import { FlinkSQLRelationVisitor, InsertRelation, QueryRelation, TableRelation } from './flinksql-relation.visitor';
type CompletionRelationCategory = 'table' | 'view' | 'CTE';
interface CompletionRelation<Category = CompletionRelationCategory> {
category: Category;
label: string;
}
interface CompletionModel {
label: string;
}
type ContextCompletions<C> = {
type: 'column';
relations: CompletionRelation[];
columns: Array<{
relation?: CompletionRelation;
name: string;
desc?: C;
}>;
} | {
type: 'relation';
relations: CompletionRelation[];
incompleteReference?: string[];
} | {
type: 'model';
models: CompletionModel[];
incompleteReference?: string[];
} | {
type: 'database';
incompleteReference?: string;
} | {
type: 'catalog';
} | {
type: 'other';
};
export interface Snippet {
label: string;
template: string;
filterText: string;
}
export interface Snippets {
snippets: Snippet[];
}
export type Completions<C> = ContextCompletions<C> & Snippets;
export declare class CompletionVisitor<C extends Named> extends FlinkSQLRelationVisitor<void> {
private cursor;
private getColumns?;
private caretScope?;
private hasCompletions;
private completions;
private relationInStatementContext?;
private contextualModelNames;
constructor(cursor: CursorQuery, getColumns?: ((args?: TableColumnMetadataArgs) => C[]) | undefined);
defaultResult(): void;
aggregateResult(): void;
onColumnReference(): void;
private updateQueryCompletionItems;
private handleRelationContext;
private parseMultipartModelName;
private collectModelName;
private handleModelContext;
private handleScopedColumn;
private handleDatabaseContext;
getSuggestions(): Completions<C>;
onRelation(relation: TableRelation | QueryRelation | InsertRelation): void;
visitErrorNode(node: ErrorNode): void;
visitStatement(ctx: StatementContext): void;
visitUse(ctx: UseContext): void;
visitAnalyze(ctx: AnalyzeContext): void;
visitCreateTable(ctx: CreateTableContext): void;
visitCreateModel(ctx: CreateModelContext): void;
visitLikeTable(ctx: LikeTableContext): void;
visitAsDatabase(ctx: AsDatabaseContext): void;
visitDropDatabase(ctx: DropDatabaseContext): void;
visitDropTable(ctx: DropTableContext): void;
visitDropModel(ctx: DropModelContext): void;
visitAutoOptimizeTable(ctx: AutoOptimizeTableContext): void;
visitDescribeCatalog(ctx: DescribeCatalogContext): void;
visitDescribeDatabase(ctx: DescribeDatabaseContext): void;
visitDescribeTable(ctx: DescribeTableContext): void;
visitDescribeModel(ctx: DescribeModelContext): void;
visitAlterDatabase(ctx: AlterDatabaseContext): void;
visitAlterModel(ctx: AlterModelContext): void;
visitAlterTable(ctx: AlterTableContext): void;
visitAlterView(ctx: AlterViewContext): void;
visitShowModels(ctx: ShowModelsContext): void;
visitShowCreateModel(ctx: ShowCreateModelContext): void;
visitInsert(ctx: InsertContext): void;
visitQueryPrimary(ctx: QueryPrimaryContext): void;
visitMlPredictFunctionArgs(ctx: MlPredictFunctionArgsContext): void;
visitMlPredictFunctionNamedArgument(ctx: MlPredictFunctionNamedArgumentContext): void;
visitTableReference(ctx: TableReferenceContext): void;
visitColumnReference(ctx: ColumnReferenceContext): void;
visitDereference(ctx: DereferenceContext): void;
visitJoinCondition(ctx: JoinConditionContext): void;
visitPartitionedBy(ctx: PartitionedByContext): void;
private handleColumnsContext;
}
export {};