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.

59 lines (58 loc) 2.56 kB
"use strict"; 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;