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.
59 lines (58 loc) • 2.56 kB
JavaScript
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
const types_1 = require("./types");
const columns_1 = __importDefault(require("../columns"));
const create_conditions_1 = __importDefault(require("../conditionals/create_conditions"));
const __1 = require("..");
const types_2 = require("../../types");
const utils_1 = require("../../utils");
const join = (join, alias) => {
const sJoins = [];
const joinColumns = [];
const joinPrepStamentValues = [];
const jColumnsValues = [];
if (join === undefined)
return {
joinPreparedStatement: Object.assign({}, types_2.emptyPrepStatement),
columnsPreparedStatement: Object.assign({}, types_2.emptyPrepStatement),
};
if (!Array.isArray(join))
join = [join];
join.filter((j) => (0, types_1.isJoinObject)(j)).forEach((j) => {
const { columns, table, type, on } = j;
const { table: joinExpression, alias: joinAlias, values: tableValues, } = (0, __1.tableObject)(table);
joinPrepStamentValues.push(...tableValues);
if (columns !== undefined) {
const joinColumnsPrepStatement = (0, columns_1.default)(columns, joinAlias);
jColumnsValues.push(...joinColumnsPrepStatement.values);
joinColumns.push(joinColumnsPrepStatement.statement);
}
let onStatement = '';
if (on !== undefined) {
const onPrepStatement = (0, create_conditions_1.default)(on, alias && joinAlias, alias);
if ((0, utils_1.isNotEmptyString)(onPrepStatement.statement)) {
onStatement = ` ON ${onPrepStatement.statement}`;
joinPrepStamentValues.push(...onPrepStatement.values);
}
}
sJoins.push(`${type ? `${type.toUpperCase()} ` : ''}JOIN ${joinExpression}${joinAlias && joinAlias !== joinExpression ? ` ${joinAlias}` : ''}${onStatement}`);
});
const jColumns = joinColumns.filter((j) => !!j).join(',');
const joinPrepStatement = {
statement: sJoins.length !== 0 ? ` ${sJoins.join(' ')}` : '',
values: joinPrepStamentValues,
__is_prep_statement: true,
};
return {
joinPreparedStatement: joinPrepStatement,
columnsPreparedStatement: {
statement: jColumns,
values: jColumnsValues,
__is_prep_statement: true,
},
};
};
exports.default = join;
;