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
JavaScript
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;
;