@eggjs/dal-runtime
Version:
tegg dal decorator
85 lines • 8.73 kB
JavaScript
"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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