UNPKG

very-simple-orm

Version:

This is simple orm for typesript/javascript projects

92 lines 4.16 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); const SQL_1 = __importDefault(require("./SQL")); class Select extends SQL_1.default { /** * select the table by single filed i.e id * @param _idField this is object with id field name and it value as clause * @param _tableName name of the table * @param _selectedFields field to returned if undefined all fields will be returned * @param _orderBy order by columns * @param _limit limit of rows * @param _offset offset rows * @returns return sql_values */ selectById(_idField, _selectedFields, _orderBy, _limit, _offset) { let __sql = ""; let __values = []; if (_selectedFields === undefined || _selectedFields.length < 1) { __sql = `SELECT * FROM ${this._tableName} WhERE ${_idField["fieldName"]} = ?`; } else { __sql = `SELECT ${_selectedFields.toString()} FROM ${this._tableName} WHERE ${_idField['fieldName']} = ?`; } __sql = `${__sql}${this.orderBy(_orderBy === null || _orderBy === void 0 ? void 0 : _orderBy.fields, _orderBy === null || _orderBy === void 0 ? void 0 : _orderBy.by)}${this.limit(_limit)}${this.offset(_offset)}`; __values = [_idField["value"]]; return { "sql": __sql, "values": __values }; } /** * * @param _clauseFields clauase fileds * @param _selectedFields selected field of the current table * @param _orderBy order by columns * @param _limit limit of rows * @param _offset offset rows * @returns return sql_values */ select(_clauseFields, _selectedFields, _orderBy, _limit, _offset, _join) { let __sql = ""; // create selected field list if (_selectedFields === undefined || _selectedFields.length < 1) { __sql = `SELECT * FROM ${this._tableName}`; } else { let _selectedFieldWithTable = _selectedFields.map(el => `${this._tableName}.${el}`); if (_join !== undefined) { _join.forEach(el => { if (el.otherTableSelectField !== undefined) { el.otherTableSelectField.forEach(it => { _selectedFieldWithTable.push(`${el.otherTable}.${it}`); }); } }); } __sql = `SELECT ${_selectedFieldWithTable.toString()} FROM ${this._tableName} `; } if (_join !== undefined) { _join.forEach(el => { let join = ` ${el.type} ${el.otherTable} ON ${el.otherTable}.${el.otherTableJoinField} = ${el.anotherTable || this._tableName}.${el.anotherTableJoinField || el.thistableJoinField}`; __sql = `${__sql} ${join}`; }); } //write code of clause let ClauseFieldValues; if (_clauseFields !== undefined) { ClauseFieldValues = this.clauseMaker(_clauseFields); __sql = ` ${__sql} WHERE ${ClauseFieldValues.sql}`; } else { ClauseFieldValues = { "sql": "sql", "values": [] }; } __sql = `${__sql}${this.orderBy(_orderBy === null || _orderBy === void 0 ? void 0 : _orderBy.fields, _orderBy === null || _orderBy === void 0 ? void 0 : _orderBy.by)}${this.limit(_limit)}${this.offset(_offset)}`; return { "sql": __sql, "values": ClauseFieldValues.values }; } orderBy(fields = [], by = "ASC") { //write code for sort statement let ret = fields.length > 0 ? ` ORDER BY ${fields.toString()} ${by}` : ""; return ret; } offset(_offset = 0) { let ret = _offset > 0 ? ` OFFSET ${_offset}` : ""; return ret; } limit(_limit = 0) { let ret = _limit > 0 ? ` LIMIT ${_limit}` : ""; return ret; } } exports.default = Select; //# sourceMappingURL=Select.js.map