@odyssoft/tsorm
Version:
TypeScript ORM for MySQL
37 lines (36 loc) • 1.74 kB
JavaScript
;
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;