egg-orm-ts
Version:
Simple orm with Typeorm, for egg plugin.
76 lines • 5.36 kB
JavaScript
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.BaseController = void 0;
const egg_1 = require("egg");
const error_1 = require("../../lib/error");
/**
* controller基类:
* - 禁掉this.service访问,避免业务混乱;
* - 提供统一的公共调用方法this.callService:校验参数和响应,传递参数;
* - 提供this.success处理响应结果;
*/
class BaseController extends egg_1.Controller {
constructor(_ctx) {
super(_ctx);
this.modelName = this.constructor.name[0].toLowerCase() + this.constructor.name.substring(1, this.constructor.name.length - 10);
this.HTTP_CODE = error_1.HTTP_CODE;
this.BIZ_CODE = error_1.BIZ_CODE;
this.BizError = (message, code) => {
if (process.env.NODE_ENV === 'development') {
message = `${this.constructor.name} error:` + message;
}
throw new error_1.BizError(message, code);
};
/**
* Only use callService instead!
*/
this.service = undefined;
// this.ctx.repo = undefined;
// this.ctx.connection = undefined;
/**
* 统一公共调用方法
* @param {object} params 参数
* @param {object} paramsSchema 参数校验Joi对象
* @param {string} methodName 方法名称
* @param {object} resultSchema 结果校验Joi对象
* @return {object} result 原始dao响应对象
*/
this.callService = async (params, paramsSchema, methodName, resultSchema) => {
// controller 验证参数
if (paramsSchema) {
const { error } = paramsSchema.validate(params);
if (!!error) {
throw this.BizError('参数错误:' + error.message);
}
}
// 默认调用 controller 同名函数
let newMethodName = methodName;
if (!newMethodName) {
newMethodName = this.ctx.request.path.split('/').slice(-1)[0];
}
const result = await this.ctx.service[this.modelName][newMethodName](params);
// controller 验证响应结果
if (resultSchema) {
const { error } = resultSchema.validate(result);
if (!!error) {
throw this.BizError('结果错误:' + error.message);
}
}
return result;
};
}
/**
* 默认 统一处理响应结果(可自定义)
* - 接口会自动过滤掉 undefined 的属性,则转换为 null
* @param res 参数
*/
success(res) {
// 统一响应结构
return {
code: 0,
data: !res ? null : res,
};
}
}
exports.BaseController = BaseController;
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFzZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbImJhc2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsNkJBQTBDO0FBRTFDLDJDQUFnRTtBQUVoRTs7Ozs7R0FLRztBQUNILE1BQU0sY0FBZSxTQUFRLGdCQUFVO0lBY3JDLFlBQVksSUFBYTtRQUN2QixLQUFLLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDWixJQUFJLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLFdBQVcsRUFBRSxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLEVBQUUsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsTUFBTSxHQUFHLEVBQUUsQ0FBQyxDQUFDO1FBQ2hJLElBQUksQ0FBQyxTQUFTLEdBQUcsaUJBQVMsQ0FBQztRQUMzQixJQUFJLENBQUMsUUFBUSxHQUFHLGdCQUFRLENBQUM7UUFDekIsSUFBSSxDQUFDLFFBQVEsR0FBRyxDQUFDLE9BQU8sRUFBRSxJQUFJLEVBQUUsRUFBRTtZQUNoQyxJQUFJLE9BQU8sQ0FBQyxHQUFHLENBQUMsUUFBUSxLQUFLLGFBQWEsRUFBRTtnQkFDMUMsT0FBTyxHQUFHLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLFNBQVMsR0FBRyxPQUFPLENBQUM7YUFDdkQ7WUFDRCxNQUFNLElBQUksZ0JBQVEsQ0FBQyxPQUFPLEVBQUUsSUFBSSxDQUFDLENBQUM7UUFDcEMsQ0FBQyxDQUFDO1FBRUY7O1dBRUc7UUFDSCxJQUFJLENBQUMsT0FBTyxHQUFHLFNBQVMsQ0FBQztRQUN6Qiw2QkFBNkI7UUFDN0IsbUNBQW1DO1FBRW5DOzs7Ozs7O1dBT0c7UUFDSCxJQUFJLENBQUMsV0FBVyxHQUFHLEtBQUssRUFBRSxNQUFNLEVBQUUsWUFBWSxFQUFFLFVBQVUsRUFBRSxZQUFZLEVBQUUsRUFBRTtZQUMxRSxrQkFBa0I7WUFDbEIsSUFBSSxZQUFZLEVBQUU7Z0JBQ2hCLE1BQU0sRUFBRSxLQUFLLEVBQUUsR0FBRyxZQUFZLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxDQUFDO2dCQUNoRCxJQUFJLENBQUMsQ0FBQyxLQUFLLEVBQUU7b0JBQ1gsTUFBTSxJQUFJLENBQUMsUUFBUSxDQUFDLE9BQU8sR0FBRyxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUM7aUJBQzlDO2FBQ0Y7WUFFRCx1QkFBdUI7WUFDdkIsSUFBSSxhQUFhLEdBQUcsVUFBVSxDQUFDO1lBQy9CLElBQUksQ0FBQyxhQUFhLEVBQUU7Z0JBQ2xCLGFBQWEsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO2FBQy9EO1lBQ0QsTUFBTSxNQUFNLEdBQUcsTUFBTSxJQUFJLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsYUFBYSxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUM7WUFDN0Usb0JBQW9CO1lBQ3BCLElBQUksWUFBWSxFQUFFO2dCQUNoQixNQUFNLEVBQUUsS0FBSyxFQUFFLEdBQUcsWUFBWSxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsQ0FBQztnQkFDaEQsSUFBSSxDQUFDLENBQUMsS0FBSyxFQUFFO29CQUNYLE1BQU0sSUFBSSxDQUFDLFFBQVEsQ0FBQyxPQUFPLEdBQUcsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDO2lCQUM5QzthQUNGO1lBQ0QsT0FBTyxNQUFNLENBQUM7UUFDaEIsQ0FBQyxDQUFDO0lBQ0osQ0FBQztJQUVEOzs7O09BSUc7SUFDSCxPQUFPLENBQUMsR0FBUTtRQUNkLFNBQVM7UUFDVCxPQUFPO1lBQ0wsSUFBSSxFQUFFLENBQUM7WUFDUCxJQUFJLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsR0FBRztTQUN4QixDQUFDO0lBQ0osQ0FBQztDQUVGO0FBRVEsd0NBQWMifQ==