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.
39 lines (38 loc) • 2.09 kB
TypeScript
import * as ast from "./astsql";
import { QueryVisitor, QueryContext, ContextBuilder } from "./queryVisitor";
export declare class CompilationContext implements QueryContext {
currentNode: ast.SqlAstNode;
parentNode?: ast.SqlAstNode;
queryString: string;
constructor(currentNode: ast.SqlAstNode);
}
export interface CompileMethod<TNode extends ast.SqlAstNode = ast.SqlAstNode> {
(context: CompilationContext, node: TNode): CompilationContext;
}
export declare abstract class QueryCompiler extends QueryVisitor<CompilationContext> {
dialect: ast.SqlDialect;
delimiter: string;
constructor(dialect: ast.SqlDialect, query: ast.SqlRoot, contextBuilder?: ContextBuilder);
compile(): string;
protected visitSqlRoot: CompileMethod<ast.SqlRoot>;
protected visitQueryExpression: CompileMethod<ast.QueryExpression>;
protected visitConstant: CompileMethod<ast.Constant>;
protected visitFromClause: CompileMethod<ast.FromClause>;
protected visitTableSource: CompileMethod<ast.TableSource>;
protected visitJoinClause: CompileMethod<ast.JoinClause>;
protected visitTableSpec: CompileMethod<ast.TableSpec>;
protected visitGroupByClause: CompileMethod<ast.GroupByClause>;
protected visitAliasedTerm: CompileMethod<ast.AliasedTerm<ast.SqlAstNode>>;
protected visitSimpleFunctionCall: CompileMethod<ast.SimpleFunctionCall>;
protected visitBinaryPredicate: CompileMethod<ast.BinaryPredicate>;
protected visitLikePredicate: CompileMethod<ast.LikePredicate>;
protected visitColumnName: CompileMethod<ast.ColumnName>;
protected visitWhereClause: CompileMethod<ast.WhereClause>;
protected visitOrderByClause: CompileMethod<ast.OrderByClause>;
protected visitOrderByExpression: CompileMethod<ast.OrderByExpression>;
protected visitLimitClause: CompileMethod<ast.LimitClause>;
protected visitBinaryExpression: CompileMethod<ast.BinaryExpression<ast.BinaryOperator>>;
}
export declare class MySQLQueryCompiler extends QueryCompiler {
constructor(query: ast.SqlRoot);
}