rawsql-ts
Version:
[beta]High-performance SQL parser and AST analyzer written in TypeScript. Provides fast parsing and advanced transformation capabilities.
85 lines (84 loc) • 2.78 kB
TypeScript
import { CommonTable, PartitionByClause } from "../models/Clause";
import { SelectQuery } from "../models/SelectQuery";
import { SqlComponent, SqlComponentVisitor } from "../models/SqlComponent";
import { ValueList } from "../models/ValueComponent";
/**
* A visitor that collects all CommonTable instances from a SQL query structure.
* This includes tables from:
* - WITH clauses
* - Subqueries
* - Inline queries
* - UNION queries
* - Value components that may contain queries
*/
export declare class CTECollector implements SqlComponentVisitor<void> {
private handlers;
private commonTables;
private visitedNodes;
private isRootVisit;
constructor();
/**
* Get all collected CommonTables
*/
getCommonTables(): CommonTable[];
/**
* Reset the collection of CommonTables
*/
private reset;
collect(query: SelectQuery): CommonTable[];
/**
* Main entry point for the visitor pattern.
* Implements the shallow visit pattern to distinguish between root and recursive visits.
*/
visit(arg: SqlComponent): void;
/**
* Internal visit method used for all nodes.
* This separates the visit flag management from the actual node visitation logic.
*/
private visitNode;
private visitSimpleSelectQuery;
private visitBinarySelectQuery;
private visitValuesQuery;
private visitWithClause;
private visitCommonTable;
private visitSelectClause;
private visitSelectItem;
private visitFromClause;
private visitSourceExpression;
private visitTableSource;
private visitParenSource;
private visitSubQuerySource;
private visitInlineQuery;
private visitJoinClause;
private visitJoinOnClause;
private visitJoinUsingClause;
private visitWhereClause;
private visitGroupByClause;
private visitHavingClause;
private visitOrderByClause;
private visitWindowFrameClause;
private visitLimitClause;
private visitForClause;
private visitOrderByItem;
private visitParenExpression;
private visitBinaryExpression;
private visitUnaryExpression;
private visitCaseExpression;
private visitSwitchCaseArgument;
private visitCaseKeyValuePair;
private visitBetweenExpression;
private visitFunctionCall;
private visitArrayExpression;
private visitTupleExpression;
private visitCastExpression;
private visitTypeValue;
private visitWindowFrameExpression;
private visitWindowFrameSpec;
private visitIdentifierString;
private visitRawString;
private visitColumnReference;
private visitParameterExpression;
private visitLiteralValue;
visitPartitionByClause(partitionBy: PartitionByClause): void;
visitValueList(valueList: ValueList): void;
}