UNPKG

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
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; }