rhombic
Version:
SQL parsing, lineage extraction and manipulation
39 lines • 1.35 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.OrderByVisitor = void 0;
const SqlParser_1 = require("../SqlParser");
const getImageFromChildren_1 = require("../utils/getImageFromChildren");
const getChildrenRange_1 = require("../utils/getChildrenRange");
const Visitor = SqlParser_1.parser.getBaseCstVisitorConstructorWithDefaults();
/**
* Visitor to extract information about `ORDER BY` statement
*/
class OrderByVisitor extends Visitor {
constructor() {
super();
this.output = [];
this.validateVisitor();
}
orderItem(ctx) {
const range = getChildrenRange_1.getChildrenRange(ctx);
const item = Object.assign({ expression: getImageFromChildren_1.getImageFromChildren(ctx.expression[0].children) }, range);
if (ctx.Asc)
item.order = "asc";
if (ctx.Desc)
item.order = "desc";
if (ctx.First)
item.nullsOrder = "first";
if (ctx.Last)
item.nullsOrder = "last";
this.output.push(item);
}
select(ctx) {
const range = getChildrenRange_1.getChildrenRange(ctx);
this.insertLocation = {
line: range.endLine,
column: range.endColumn
};
}
}
exports.OrderByVisitor = OrderByVisitor;
//# sourceMappingURL=OrderByVisitor.js.map