UNPKG

ts-sql

Version:

An SQL builder in Typescript. This project is heavily inspired by [XQL](/extjs/xql). A big shout out to @exjs and @kobalicek for this amazing project.

47 lines (46 loc) 2.43 kB
import { AstSymbol, SymbolTable } from "jsymbol"; import * as ast from "./astsql"; import { QueryContext, QueryVisitor, ContextBuilder } from "./queryVisitor"; export declare enum SymbolState { Resolved = 0, Unresolved = 1, } export declare class SqlAstSymbol implements AstSymbol<ast.SqlSymbolType> { identifier: string; type: ast.SqlSymbolType; state: SymbolState; parent?: SqlAstSymbol; constructor(identifier: string, type: ast.SqlSymbolType); toString(): string; } export declare class ValidationContext implements QueryContext { currentNode: ast.SqlAstNode; parentNode?: ast.SqlAstNode; symbolTable: SymbolTable<SqlAstSymbol>; collectedSymbols: SqlAstSymbol[]; constructor(currentNode: ast.SqlAstNode); } export interface ValidationMethod<TNode extends ast.SqlAstNode = ast.SqlAstNode> { (context: ValidationContext, node: TNode): ValidationContext; } export declare class QueryValidator extends QueryVisitor<ValidationContext> { constructor(dialect: ast.SqlDialect, query: ast.SqlRoot, contextBuilder?: ContextBuilder); validate(): SqlAstSymbol[]; protected visitSelectStatement: ValidationMethod<ast.SelectStatement>; protected visitQueryExpression: ValidationMethod<ast.QueryExpression>; protected visitTableSpec: ValidationMethod<ast.TableSpec>; protected visitAllColumns: ValidationMethod<ast.AllColumns>; protected visitColumnName: ValidationMethod<ast.ColumnName>; protected visitSimpleFunctionCall: ValidationMethod<ast.SimpleFunctionCall>; protected visitAssignedTerm: ValidationMethod<ast.AssignedTerm<ast.SqlAstNode>>; protected visitAssignedExpressionAtom: ValidationMethod<ast.AssignedExpressionAtom>; protected visitVariable: ValidationMethod<ast.Variable>; protected visitSelectIntoFieldsExpression: ValidationMethod<ast.SelectIntoFieldsExpression>; protected visitAliasedTerm: ValidationMethod<ast.AliasedTerm<ast.SqlAstNode>>; protected addResolvedSymbol(context: ValidationContext, name: string, type: ast.SqlSymbolType): SqlAstSymbol; protected lookupOrAddTable(context: ValidationContext, name: string): SqlAstSymbol; protected lookupOrAddSymbol(context: ValidationContext, name: string, type: ast.SqlSymbolType): SqlAstSymbol; } export declare class MySQLQueryValidator extends QueryValidator { constructor(query: ast.SqlRoot); }