UNPKG

@odyssoft/tsorm

Version:
37 lines (36 loc) 1.74 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.sql = exports.createView = void 0; const aliasModel_1 = require("./aliasModel"); const utils_1 = require("./utils"); function createView(name, keys, connection, schema) { var _a; const table = `\`${schema}\`.\`${name}\``; const SQL = (0, exports.sql)(table, keys); return _a = class View { }, _a.select = (query) => connection.query(SQL.select(query)), _a.SQL = () => SQL, _a.as = (alias) => { const Keys = {}; keys.forEach((key) => (Keys[key] = {})); return (0, aliasModel_1.aliasModel)(alias, table, Keys, connection); }, _a; } exports.createView = createView; const sql = (name, keys) => ({ select(query) { var _a; const sql = [`SELECT ${((_a = query === null || query === void 0 ? void 0 : query.$columns) === null || _a === void 0 ? void 0 : _a.join(', ')) || '*'} FROM ${name}`]; (query === null || query === void 0 ? void 0 : query.$where) && sql.push(`WHERE ${(0, utils_1.parseOptions)(query.$where, keys)}`); (query === null || query === void 0 ? void 0 : query.$groupBy) && sql.push(`GROUP BY ${Array.isArray(query.$groupBy) ? query.$groupBy.join(', ') : query.$groupBy}`); (query === null || query === void 0 ? void 0 : query.$orderBy) && sql.push(`ORDER BY ${Array.isArray(query.$orderBy) ? query.$orderBy.join(', ') : query.$orderBy}`); (query === null || query === void 0 ? void 0 : query.$limit) && sql.push(`LIMIT ${Array.isArray(query.$limit) ? query.$limit.join(', ') : query.$limit}`); return sql.join(' '); }, }); exports.sql = sql;