mysql-all-in-one
Version:
A package that allows you to have a complete interaction with a MYSQL database, allowing to connect to the database, retrieve data and create queries.
43 lines (42 loc) • 1.64 kB
JavaScript
Object.defineProperty(exports, "__esModule", { value: true });
exports.order = void 0;
const generate_query_from_prepared_statement_1 = require("../../generate_query_from_prepared_statement");
const types_1 = require("../../types");
const utils_1 = require("../../utils");
const type_1 = require("./type");
const orderBy = (value, alias) => {
if (typeof value === 'object') {
return Object.entries(value)
.map(([key, val]) => {
if (key === '__no_alias' && (0, type_1.isSelectOrder)(val)) {
return orderBy(val);
}
if (key === '__expression') {
return orderExpression(val, alias);
}
if (val !== 'asc' && val !== 'desc')
return undefined;
return `${(0, utils_1.safeApplyAlias)((0, utils_1.escapeNames)(key), alias)} ${val}`;
})
.filter((v) => v !== undefined)
.join(',');
}
};
const orderExpression = (val, alias) => {
if (Array.isArray(val))
return val.map(v => orderExpression(v, alias)).join(',');
if ((0, types_1.isSqlExpressionPreparedStatement)(val)) {
return (0, generate_query_from_prepared_statement_1.generateQueryFromPreparedStatement)(val)
.split('__SQL__EXPRESSION__ALIAS__.')
.join(typeof alias === 'string' && alias.length !== 0 ? `${alias}.` : '');
}
if (typeof val === 'string') {
return val;
}
};
const order = (value, alias) => {
const orderResult = orderBy(value, alias);
return orderResult ? ` ORDER BY ${orderResult}` : '';
};
exports.order = order;
;