UNPKG

mm_os

Version:

MM_OS服务端架构,用于快速构建应用程序,支持网站建设、小程序后台、AI应用、物联网(IOT/AIOT)、游戏服务端等多种场景。

151 lines (140 loc) 3.15 kB
const Manager = require('mm_machine').Manager; const Drive = require('./drive'); /** * Sql语句拓展类 * @augments {Manager} * @class */ class Sql extends Manager { /** * 配置参数 * @type {object} */ static config = { /** * 名称 * @type {string} */ name: '', /** * 标题 * @type {string} */ title: 'sql管理', /** * 描述 * @type {string} */ description: '这是sql管理器', /** * 检索文件名 * @type {string} */ filename: 'sql.json', /** * 模板目录 * @type {string} */ tpl_dir: __dirname, /** * 基础目录 * @type {string} */ base_dir: '../common/sql'.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({ ...Sql.config, ...config }, parent); } } /** * sql驱动类 * @type {Drive} */ Sql.prototype.Drive = Drive; /** * 排序 */ Sql.prototype.sort = function () { let infos = this.getInfos(); infos.sortBy('asc', 'name'); }; /** * 执行sql * @param {string} name 名称 * @param {object} query 查询参数 * @param {object} body 修改参数 * @param {object} db 数据库管理器 (object) 只支持可用sql语句的数据库 * @returns {object} 执行结果 */ Sql.prototype.run = async function (name, query, body, db) { var obj = this.getMod(name); if (obj) { var ret = await obj.run(query, body, db); if (this.mode > 4) { obj.do('reload'); } return ret; } return null; }; exports.Sql = Sql; /** * Sql模板池 */ if (!$.pool.sql) { $.pool.sql = {}; } /** * Sql管理器,用于创建缓存 * @param {string} scope 作用域 * @param {string} title 标题 * @returns {object} 返回一个缓存类 */ function sqlAdmin(scope, title) { var sc = scope || $.val.scope + ''; var obj = $.pool.sql[sc]; if (!obj) { $.pool.sql[sc] = new Sql({ name: sc, title: title }); obj = $.pool.sql[sc]; } return obj; } /** * @module 导出Sql管理器 */ if ($.admin) { $.admin.sql = sqlAdmin; }