rawsql-ts
Version:
High-performance SQL parser and AST analyzer written in TypeScript. Provides fast parsing and advanced transformation capabilities.
48 lines (47 loc) • 1.98 kB
TypeScript
import { SimpleSelectQuery } from "../models/SimpleSelectQuery";
import { ColumnReference, ValueComponent } from "../models/ValueComponent";
export type ClauseScopedColumnReferenceClause = "select" | "where" | "joinOn" | "groupBy" | "having" | "orderBy" | "window" | "limitOffset";
export interface ClauseScopedColumnReferenceInfo {
clause: ClauseScopedColumnReferenceClause;
reference: ColumnReference;
qualifiedName: string;
namespaces: string[];
namespace: string | null;
column: string;
expression: ValueComponent;
}
export interface ClauseScopedColumnReferences {
select: ClauseScopedColumnReferenceInfo[];
where: ClauseScopedColumnReferenceInfo[];
joinOn: ClauseScopedColumnReferenceInfo[];
groupBy: ClauseScopedColumnReferenceInfo[];
having: ClauseScopedColumnReferenceInfo[];
orderBy: ClauseScopedColumnReferenceInfo[];
window: ClauseScopedColumnReferenceInfo[];
limitOffset: ClauseScopedColumnReferenceInfo[];
}
/**
* Collects ColumnReference nodes grouped by the root SimpleSelectQuery clause that owns them.
*
* Subquery and CTE bodies are intentionally not traversed because they have their own query-body
* ownership. Use ColumnReferenceCollector when comprehensive tree traversal is required.
*/
export declare class ClauseScopedColumnReferenceCollector {
collect(query: SimpleSelectQuery): ClauseScopedColumnReferences;
private createEmptyResult;
private collectFromSelectClause;
private collectFromJoinClauses;
private collectFromWhereClause;
private collectFromGroupByClause;
private collectFromHavingClause;
private collectFromOrderByClause;
private collectFromLimitClause;
private collectFromOffsetClause;
private collectFromFetchClause;
private collectFromWindowsClause;
private collectFromValueComponent;
private collectFromFunctionCall;
private collectFromWindowFrameExpression;
private createInfo;
private getNameText;
}