sedk-mysql
Version:
Simple SQL builder and validator for MySQL
63 lines • 2.5 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.f = exports.NOT = exports.$ = exports.o = exports.e = void 0;
const models_1 = require("./models");
const operators_1 = require("./operators");
const orderBy_1 = require("./orderBy");
const AggregateFunction_1 = require("./AggregateFunction");
const database_1 = require("./database");
const binder_1 = require("./binder");
function e(left, operator, right) {
const l = left instanceof binder_1.Binder
? models_1.Expression.getSimpleExp(left)
: left;
if (operator !== undefined && right !== undefined) {
const r = right instanceof binder_1.Binder ? models_1.Expression.getSimpleExp(right) : right;
if ((0, operators_1.isComparisonOperator)(operator)
&& l instanceof models_1.Expression
&& r instanceof models_1.Expression) {
return new models_1.Condition({ leftExpression: l, operator, rightExpression: r });
}
return models_1.Expression.getComplexExp(l, operator, r);
}
else {
return models_1.Expression.getSimpleExp(l);
}
}
exports.e = e;
function o(alias, direction, nullsPosition) {
return new orderBy_1.OrderByItemInfo(alias, direction, nullsPosition);
}
exports.o = o;
function $(value) {
return new binder_1.Binder(value);
}
exports.$ = $;
function NOT(condition) {
return new models_1.Condition({ leftExpression: condition, notLeft: true });
}
exports.NOT = NOT;
exports.f = {
sum: function (column) {
return aggregateFunction(AggregateFunction_1.AggregateFunctionEnum.SUM, column);
},
avg: function (column) {
return aggregateFunction(AggregateFunction_1.AggregateFunctionEnum.AVG, column);
},
count: function (column) {
return aggregateFunction(AggregateFunction_1.AggregateFunctionEnum.COUNT, column);
},
max: function (column) {
return aggregateFunction(AggregateFunction_1.AggregateFunctionEnum.MAX, column);
},
min: function (column) {
return aggregateFunction(AggregateFunction_1.AggregateFunctionEnum.MIN, column);
},
};
function aggregateFunction(functionName, column) {
if (column instanceof database_1.NumberColumn || (0, models_1.isNumber)(column))
return new AggregateFunction_1.AggregateFunction(functionName, models_1.Expression.getSimpleExp(column));
else
return new AggregateFunction_1.AggregateFunction(functionName, column);
}
//# sourceMappingURL=functions.js.map