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.

48 lines 1.67 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); const queryVisitor_1 = require("./queryVisitor"); const astsql_1 = require("./astsql"); class QueryAstPrinter extends queryVisitor_1.QueryVisitor { constructor(dialect, query, options) { super(dialect, query); let defaultOptions = this.getDefaultOptions(); this._options = Object.assign({}, defaultOptions, options); this._indents = new Map(); } print() { this.visit(); } visitGenericNode(context, node) { this.log(this.getIndentation(context) + astsql_1.SqlAstNode.getNodeType(node)); return super.visitGenericNode(context, node); } getDefaultOptions() { return { indentSize: 2, logger: { log: (message) => console.log(message) } }; } log(message) { this._options.logger.log(message); } getIndentation(context) { if (context.parentNode) { if (this._indents.has(context.parentNode)) { this._indents.set(context.currentNode, (this._indents.get(context.parentNode) || 0) + 1); } } else { this._indents.set(context.currentNode, 0); } let ci = this._indents.get(context.currentNode) || 0; return " ".repeat(ci * this._options.indentSize); } } exports.QueryAstPrinter = QueryAstPrinter; class MySQLAstPrinter extends QueryAstPrinter { constructor(query, options) { super("MySQL", query, options); } } exports.MySQLAstPrinter = MySQLAstPrinter; //# sourceMappingURL=astPrinter.js.map