UNPKG

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
"use strict"; 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;