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.

78 lines (77 loc) 2.85 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); const types_1 = require("../../types"); const utils_1 = require("../../utils"); const create_columns = (columns, alias) => { if (typeof columns === "string") { if (columns === "*") { return { statement: "*", values: [], __is_prep_statement: true }; } if (columns.endsWith(".*")) { return { statement: `${(0, utils_1.escapeNames)(columns.substring(0, columns.length - 2))}.*`, values: [], __is_prep_statement: true, }; } return { statement: (0, utils_1.safeApplyAlias)((0, utils_1.escapeNames)(columns), alias), values: [], __is_prep_statement: true, }; } if (Array.isArray(columns)) { const prepStatemnt = columns .map((c) => create_columns(c, alias)) .filter((v) => !!v) .reduce((acc, cur) => { acc.statement.push(cur.statement); acc.values.push(...cur.values); return acc; }, { statement: [], values: [], __is_prep_statement: true, }); const statementQuery = prepStatemnt.statement.join(","); prepStatemnt.__is_prep_statement = true; return { statement: statementQuery, values: prepStatemnt.values, __is_prep_statement: true, }; } if (typeof columns === "object" && columns !== null && columns !== undefined) { const values = []; return { statement: Object.entries(columns) .filter(([_, val]) => val !== undefined) .map(([key, val]) => { const columnAlias = (0, utils_1.putBackticks)(key); if ((0, types_1.isSqlExpressionPreparedStatement)(val)) { values.push(...val.values); val = (0, utils_1.placeAliasInSqlExpression)(val, alias); return `${val.statement} AS ${columnAlias}`; } if (typeof val !== "string") { throw `Incorrect columns object. Type error: expected string received "${typeof val}" value: ${val}`; } const columnRef = (0, utils_1.safeApplyAlias)((0, utils_1.escapeNames)(val), alias); if (val === key) return columnRef; return `${columnRef} AS ${columnAlias}`; }) .join(","), values, __is_prep_statement: true, }; } return { statement: typeof alias === "string" ? `${alias}.*` : "*", values: [], __is_prep_statement: true, }; }; exports.default = create_columns;