mm_os
Version:
MM_OS服务端架构,用于快速构建应用程序,支持网站建设、小程序后台、AI应用、物联网(IOT/AIOT)、游戏服务端等多种场景。
157 lines (146 loc) • 3.3 kB
JavaScript
const Manager = require('mm_machine').Manager;
const Drive = require('./drive');
/**
* 参数类
* @augments {Manager}
* @class
*/
class Param extends Manager {
/**
* 配置参数
* @type {object}
*/
static config = {
/**
* 名称
* @type {string}
*/
name: '',
/**
* 标题
* @type {string}
*/
title: '参数管理',
/**
* 描述
* @type {string}
*/
description: '这是参数管理器',
/**
* 检索文件名
* @type {string}
*/
filename: 'param.json',
/**
* 模板目录
* @type {string}
*/
tpl_dir: __dirname,
/**
* 基础目录
* @type {string}
*/
base_dir: '../common/param'.fullname(__dirname),
/**
* 自定义目录,加载项目自定义资源
* @type {string}
*/
dir: './app'.fullname(),
/**
* 搜索模式 dir按目录搜索 | file按文件名搜索
* @type {string}
*/
search_way: 'file',
/**
* 是否懒加载
* @type {boolean}
*/
lazy_load: true,
/**
* 模式
* 1.生产模式,改变文件不会重新加载
* 2.热更新模式,改变配置文件会重新加载配置,不重新加载脚本
* 3.热重载模式,改变配置文件都会加载配置和脚本
* 4.重载模式,执行完后重新加载脚本,避免变量污染
* 5.热更新+重载模式,改变配置文件重新加载配置和脚本,执行完后重新加载脚本
* @type {number}
*/
mode: 3
};
/**
* 构造函数
* @param {object} config 配置参数
* @param {object} parent 父级模块
*/
constructor(config, parent) {
super({ ...Param.config, ...config }, parent);
}
}
/**
* 参数驱动类
* @type {Drive}
*/
Param.prototype.Drive = Drive;
/**
* 排序
*/
Param.prototype.sort = function() {
let infos = this.getInfos();
infos.sortBy('asc', 'name');
};
/**
* 配置对象或配置路径
* @param {object} db 数据库管理器 (object) 只支持可用sql语句的数据库
* @param {string} name 名称
* @param {object} query url参数
* @param {object} body 正文参数
* @returns {object} 验证失败返回错误信息,成功返回null
*/
Param.prototype.run = async function(db, name, query, body) {
var obj = this.getMod(name);
if (obj) {
// 检查参数状态,状态为0时跳过执行
if (obj.config && obj.config.state === 0) {
return null;
}
try {
return await obj.run(db, query, body);
} catch (error) {
this.log('error', 'Param验证异常:', error);
// 参数验证异常时返回null
return null;
}
}
return null;
};
exports.Param = Param;
/**
* Param参数池
*/
if (!$.pool.param) {
$.pool.param = {};
}
/**
* Param管理器,用于创建缓存
* @param {string} scope 作用域
* @param {string} title 标题
* @returns {object} 返回一个缓存类
*/
function paramAdmin(scope, title) {
var sc = scope || $.val.scope + '';
var obj = $.pool.param[sc];
if (!obj) {
$.pool.param[sc] = new Param({
name: sc,
title: title
});
obj = $.pool.param[sc];
}
return obj;
}
/**
* @module 导出Param管理器
*/
if ($.admin) {
$.admin.param = paramAdmin;
}