sedk-mysql
Version:
Simple SQL builder and validator for MySQL
121 lines • 5.09 kB
JavaScript
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.AggregateFunction = exports.AggregateFunctionEnum = void 0;
const models_1 = require("./models");
const SelectItemInfo_1 = require("./SelectItemInfo");
const operators_1 = require("./operators");
const binder_1 = require("./binder");
var AggregateFunctionEnum;
(function (AggregateFunctionEnum) {
AggregateFunctionEnum["SUM"] = "SUM";
AggregateFunctionEnum["AVG"] = "AVG";
AggregateFunctionEnum["COUNT"] = "COUNT";
AggregateFunctionEnum["MAX"] = "MAX";
AggregateFunctionEnum["MIN"] = "MIN";
})(AggregateFunctionEnum || (exports.AggregateFunctionEnum = AggregateFunctionEnum = {}));
class AggregateFunction {
constructor(funcName, expression) {
this.funcName = funcName;
this.expression = expression;
this.unique = Symbol();
if (expression.type !== models_1.ExpressionType.NUMBER)
throw new Error('Expression Type must be number in aggregate function');
}
as(alias) {
return new SelectItemInfo_1.SelectItemInfo(this, alias);
}
eq(value) {
return new models_1.Condition({
leftExpression: models_1.Expression.getSimpleExp(this),
operator: operators_1.ComparisonOperator.Equal,
rightExpression: models_1.Expression.getSimpleExp(value),
});
}
eq$(value) {
return new models_1.Condition({
leftExpression: models_1.Expression.getSimpleExp(this),
operator: operators_1.ComparisonOperator.Equal,
rightExpression: models_1.Expression.getSimpleExp(new binder_1.Binder(value)),
});
}
ne(value) {
return new models_1.Condition({
leftExpression: models_1.Expression.getSimpleExp(this),
operator: operators_1.ComparisonOperator.NotEqual,
rightExpression: models_1.Expression.getSimpleExp(value),
});
}
ne$(value) {
return new models_1.Condition({
leftExpression: models_1.Expression.getSimpleExp(this),
operator: operators_1.ComparisonOperator.NotEqual,
rightExpression: models_1.Expression.getSimpleExp(new binder_1.Binder(value)),
});
}
gt(value) {
return new models_1.Condition({
leftExpression: models_1.Expression.getSimpleExp(this),
operator: operators_1.ComparisonOperator.GreaterThan,
rightExpression: models_1.Expression.getSimpleExp(value),
});
}
gt$(value) {
return new models_1.Condition({
leftExpression: models_1.Expression.getSimpleExp(this),
operator: operators_1.ComparisonOperator.GreaterThan,
rightExpression: models_1.Expression.getSimpleExp(new binder_1.Binder(value)),
});
}
ge(value) {
return new models_1.Condition({
leftExpression: models_1.Expression.getSimpleExp(this),
operator: operators_1.ComparisonOperator.GreaterOrEqual,
rightExpression: models_1.Expression.getSimpleExp(value),
});
}
ge$(value) {
return new models_1.Condition({
leftExpression: models_1.Expression.getSimpleExp(this),
operator: operators_1.ComparisonOperator.GreaterOrEqual,
rightExpression: models_1.Expression.getSimpleExp(new binder_1.Binder(value)),
});
}
lt(value) {
return new models_1.Condition({
leftExpression: models_1.Expression.getSimpleExp(this),
operator: operators_1.ComparisonOperator.LesserThan,
rightExpression: models_1.Expression.getSimpleExp(value),
});
}
lt$(value) {
return new models_1.Condition({
leftExpression: models_1.Expression.getSimpleExp(this),
operator: operators_1.ComparisonOperator.LesserThan,
rightExpression: models_1.Expression.getSimpleExp(new binder_1.Binder(value)),
});
}
le(value) {
return new models_1.Condition({
leftExpression: models_1.Expression.getSimpleExp(this),
operator: operators_1.ComparisonOperator.LesserOrEqual,
rightExpression: models_1.Expression.getSimpleExp(value),
});
}
le$(value) {
return new models_1.Condition({
leftExpression: models_1.Expression.getSimpleExp(this),
operator: operators_1.ComparisonOperator.LesserOrEqual,
rightExpression: models_1.Expression.getSimpleExp(new binder_1.Binder(value)),
});
}
getStmt(data, artifacts, binderStore) {
if (this.expression.rightOperand === undefined || this.expression.rightOperand.type === models_1.ExpressionType.NOT_EXIST)
return `${this.funcName}(${this.expression.getStmt(data, artifacts, binderStore)})`;
return `${this.funcName}${this.expression.getStmt(data, artifacts, binderStore)}`;
}
getColumns() {
return this.expression.getColumns();
}
}
exports.AggregateFunction = AggregateFunction;
//# sourceMappingURL=AggregateFunction.js.map