UNPKG

@eggjs/dal-runtime

Version:
85 lines 8.73 kB
"use strict"; var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) { if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a getter"); if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot read private member from an object whose class did not declare it"); return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver); }; var _DataSource_instances, _DataSource_paginateCount; Object.defineProperty(exports, "__esModule", { value: true }); exports.DataSource = void 0; const TableModelInstanceBuilder_1 = require("./TableModelInstanceBuilder"); const PAGINATE_COUNT_WRAPPER = ['SELECT COUNT(0) as count FROM (', ') AS T']; class DataSource { constructor(tableModel, mysqlDataSource, sqlMap) { _DataSource_instances.add(this); this.tableModel = tableModel; this.mysqlDataSource = mysqlDataSource; this.sqlMap = sqlMap; } /** * public for aop execute to implement sql hint append * @param sqlName * @param data */ async generateSql(sqlName, data) { const { sql, params } = this.sqlMap.generate(sqlName, data, this.mysqlDataSource.timezone); const sqlType = this.sqlMap.getType(sqlName); const template = this.sqlMap.getTemplateString(sqlName); return { sql, sqlType, template, params, }; } async count(sqlName, data, options) { const newData = Object.assign({ $$count: true }, data); const executeSql = await this.generateSql(sqlName, newData); return await __classPrivateFieldGet(this, _DataSource_instances, "m", _DataSource_paginateCount).call(this, executeSql.sql, executeSql.params, options); } async execute(sqlName, data, options) { const executeSql = await this.generateSql(sqlName, data); const rows = await this.mysqlDataSource.query(executeSql.sql, executeSql.params, options); return rows.map(t => { return TableModelInstanceBuilder_1.TableModelInstanceBuilder.buildInstance(this.tableModel, t); }); } async executeRaw(sqlName, data, options) { const executeSql = await this.generateSql(sqlName, data); return await this.mysqlDataSource.query(executeSql.sql, executeSql.params, options); } async executeScalar(sqlName, data, options) { const ret = await this.execute(sqlName, data, options); if (!Array.isArray(ret)) return ret || null; return ret[0] || null; } async executeRawScalar(sqlName, data, options) { const ret = await this.executeRaw(sqlName, data, options); if (!Array.isArray(ret)) return (ret || null); return ret[0] || null; } async paginate(sqlName, data, currentPage, perPageCount, options) { const limit = `LIMIT ${(currentPage - 1) * perPageCount}, ${perPageCount}`; const executeSql = await this.generateSql(sqlName, data); const sql = executeSql.sql + ' ' + limit; const countExecuteSql = await this.generateSql(sqlName, Object.assign({ $$count: true }, data)); const ret = await Promise.all([ this.mysqlDataSource.query(sql, executeSql.params, options), __classPrivateFieldGet(this, _DataSource_instances, "m", _DataSource_paginateCount).call(this, countExecuteSql.sql, countExecuteSql.params, options), ]); return { total: Number(ret[1]), pageNum: currentPage, rows: ret[0].map(t => TableModelInstanceBuilder_1.TableModelInstanceBuilder.buildInstance(this.tableModel, t)), }; } } exports.DataSource = DataSource; _DataSource_instances = new WeakSet(), _DataSource_paginateCount = async function _DataSource_paginateCount(baseSQL, params, options) { const sql = `${PAGINATE_COUNT_WRAPPER[0]}${baseSQL}${PAGINATE_COUNT_WRAPPER[1]}`; const result = await this.mysqlDataSource.query(sql, params, options); return result[0].count; }; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiRGF0YVNvdXJjZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9EYXRhU291cmNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7OztBQUlBLDJFQUF3RTtBQVN4RSxNQUFNLHNCQUFzQixHQUFHLENBQUUsaUNBQWlDLEVBQUUsUUFBUSxDQUFFLENBQUM7QUFFL0UsTUFBYSxVQUFVO0lBS3JCLFlBQVksVUFBeUIsRUFBRSxlQUFnQyxFQUFFLE1BQW1COztRQUMxRixJQUFJLENBQUMsVUFBVSxHQUFHLFVBQVUsQ0FBQztRQUM3QixJQUFJLENBQUMsZUFBZSxHQUFHLGVBQWUsQ0FBQztRQUN2QyxJQUFJLENBQUMsTUFBTSxHQUFHLE1BQU0sQ0FBQztJQUN2QixDQUFDO0lBRUQ7Ozs7T0FJRztJQUNILEtBQUssQ0FBQyxXQUFXLENBQUMsT0FBZSxFQUFFLElBQVk7UUFDN0MsTUFBTSxFQUFFLEdBQUcsRUFBRSxNQUFNLEVBQUUsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxPQUFPLEVBQUUsSUFBSSxFQUFFLElBQUksQ0FBQyxlQUFlLENBQUMsUUFBUyxDQUFDLENBQUM7UUFDNUYsTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDN0MsTUFBTSxRQUFRLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxpQkFBaUIsQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUN4RCxPQUFPO1lBQ0wsR0FBRztZQUNILE9BQU87WUFDUCxRQUFRO1lBQ1IsTUFBTTtTQUNQLENBQUM7SUFDSixDQUFDO0lBRUQsS0FBSyxDQUFDLEtBQUssQ0FBQyxPQUFlLEVBQUUsSUFBVSxFQUFFLE9BQXlCO1FBQ2hFLE1BQU0sT0FBTyxHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUMsRUFBRSxPQUFPLEVBQUUsSUFBSSxFQUFFLEVBQUUsSUFBSSxDQUFDLENBQUM7UUFDdkQsTUFBTSxVQUFV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