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.
61 lines (60 loc) • 2.31 kB
JavaScript
Object.defineProperty(exports, "__esModule", { value: true });
exports.placeAliasInSqlExpression = exports.sqlExp = exports.sqlCol = exports.isNotEmptyString = exports.safeApplyAlias = exports.extractTableAlias = exports.putBrackets = exports.putBackticks = exports.escapeNames = void 0;
const types_1 = require("./types");
const escapeNames = (key) => key
.trim()
.replace(/ +/g, " ") // removes double spaces
.replace(/ as /i, " ") // remove " as " not case sensitive
.split(" ")
.map((val) => val
.split(".")
.map((v) => (0, exports.putBackticks)(v))
.join("."))
.join(" ");
exports.escapeNames = escapeNames;
const putBackticks = (value) => value.charAt(0) === "`" && value.charAt(value.length - 1) === "`"
? value
: `\`${value}\``;
exports.putBackticks = putBackticks;
const putBrackets = (value) => `(${value})`;
exports.putBrackets = putBrackets;
/**
*
* @param tableRef
* @returns [table, alias]
*/
const extractTableAlias = (tableRef) => {
const split = tableRef.split(" ");
if (split.length !== 2)
return [tableRef, tableRef];
return [split[0], split[1]];
};
exports.extractTableAlias = extractTableAlias;
const safeApplyAlias = (subject, alias) => subject.indexOf(".") === -1 && alias && typeof alias === "string"
? `${alias}.${subject}`
: subject;
exports.safeApplyAlias = safeApplyAlias;
const isNotEmptyString = (val) => val !== undefined &&
val !== null &&
typeof val === "string" &&
val.length !== 0;
exports.isNotEmptyString = isNotEmptyString;
/**
*
* @description Will return SqlColumn object, that is interpretated as a column, not as a string. Can be used in WHERE, sqlExpression
* @example
* {where: {date: sqlCol('another_table.date')}}
* >> WHERE `date` = `another_table`.`date`
*/
const sqlCol = (column) => new types_1.SqlColumn(column);
exports.sqlCol = sqlCol;
const sqlExp = (column) => new types_1.SqlExp(column);
exports.sqlExp = sqlExp;
const placeAliasInSqlExpression = (sqlExpression, alias) => {
sqlExpression.statement = sqlExpression.statement
.split('__SQL__EXPRESSION__ALIAS__.')
.join(typeof alias === 'string' && alias.length !== 0 ? `${alias}.` : '');
return sqlExpression;
};
exports.placeAliasInSqlExpression = placeAliasInSqlExpression;
;