UNPKG

@vulcan-sql/core

Version:
125 lines 4.31 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.JoinOnClause = void 0; const errors_1 = require("../../utils/errors"); const commonTypes_1 = require("./commonTypes"); class JoinOnClause { constructor() { this._operations = []; } get operations() { return this._operations; } on(leftColumn, operator, rightColumn) { if (!(0, commonTypes_1.isOfComparisonOperator)(operator)) throw new errors_1.TemplateError(`'There is no ${operator} operator.`); this.recordOn({ command: null, data: { leftColumn, operator, rightColumn }, }); return this; } onBetween(column, min, max) { if (min > max) throw new errors_1.TemplateError(`min value ${min} not smaller than max value ${max}.`); this.recordOn({ command: commonTypes_1.ComparisonPredicate.BETWEEN, data: { column, min, max }, }); return this; } onNotBetween(column, min, max) { this.recordOn({ command: commonTypes_1.LogicalOperator.NOT }); return this.onBetween(column, min, max); } onIn(column, values) { this.recordOn({ command: commonTypes_1.ComparisonPredicate.IN, data: { column, values }, }); return this; } onNotIn(column, values) { this.recordOn({ command: commonTypes_1.LogicalOperator.NOT }); return this.onIn(column, values); } onNull(column) { this.recordOn({ command: commonTypes_1.ComparisonPredicate.IS_NULL, data: { column }, }); return this; } onNotNull(column) { this.recordOn({ command: commonTypes_1.LogicalOperator.NOT }); return this.onNull(column); } // and andOn(leftColumn, operator, rightColumn) { this.recordOn({ command: commonTypes_1.LogicalOperator.AND }); return this.on(leftColumn, operator, rightColumn); } andOnBetween(column, min, max) { this.recordOn({ command: commonTypes_1.LogicalOperator.AND }); return this.onBetween(column, min, max); } andOnNotBetween(column, min, max) { this.recordOn({ command: commonTypes_1.LogicalOperator.AND }); return this.onNotBetween(column, min, max); } andOnIn(column, values) { this.recordOn({ command: commonTypes_1.LogicalOperator.AND }); return this.onIn(column, values); } andOnNotIn(column, values) { this.recordOn({ command: commonTypes_1.LogicalOperator.AND }); return this.onNotIn(column, values); } andOnNull(column) { this.recordOn({ command: commonTypes_1.LogicalOperator.AND }); return this.onNull(column); } andOnNotNull(column) { this.recordOn({ command: commonTypes_1.LogicalOperator.AND }); return this.onNotNull(column); } // or orOn(leftColumn, operator, rightColumn) { this.recordOn({ command: commonTypes_1.LogicalOperator.OR }); return this.on(leftColumn, operator, rightColumn); } orOnBetween(column, min, max) { this.recordOn({ command: commonTypes_1.LogicalOperator.OR }); return this.onBetween(column, min, max); } orOnNotBetween(column, min, max) { this.recordOn({ command: commonTypes_1.LogicalOperator.OR }); return this.onNotBetween(column, min, max); } orOnIn(column, values) { this.recordOn({ command: commonTypes_1.LogicalOperator.OR }); return this.onIn(column, values); } orOnNotIn(column, values) { this.recordOn({ command: commonTypes_1.LogicalOperator.OR }); return this.onNotIn(column, values); } orOnNull(column) { this.recordOn({ command: commonTypes_1.LogicalOperator.OR }); return this.onNull(column); } orOnNotNull(column) { this.recordOn({ command: commonTypes_1.LogicalOperator.OR }); return this.onNotNull(column); } // record Join-On related operations recordOn(operation) { const { command, data } = operation; this._operations.push({ command, data, }); } } exports.JoinOnClause = JoinOnClause; //# sourceMappingURL=joinOnClause.js.map