UNPKG

umbot

Version:

Universal bot(vk, telegram, viber) or skills for Yandex.Alisa, Маруся and sber

116 lines (115 loc) 3.58 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.Sql = exports._vDB = void 0; const mmApp_1 = require("../../mmApp"); const DB_1 = require("./DB"); exports._vDB = new DB_1.DB(); class Sql { host = null; user = null; pass = null; database = null; constructor() { if (!exports._vDB) { exports._vDB = new DB_1.DB(); } this.standardInit(); } async standardInit() { if (typeof mmApp_1.mmApp.config.db !== 'undefined' && mmApp_1.mmApp.config.db) { const config = mmApp_1.mmApp.config.db; if (config.host && config.database) { this.initParam(config.host, config.user || '', config.pass || '', config.database); } else { Sql._saveLog('Sql.standardInit(): Не переданы настройки для подключения к Базе Данных!'); return false; } try { return await this.connect(); } catch (exception) { Sql._saveLog(`Ошибка при инициализации БД.\n${exception}`); } } return false; } initParam(host, user, pass, database) { this.host = host; this.user = user; this.pass = pass; this.database = database; if (exports._vDB) { exports._vDB.params = { host: this.host, user: this.user, pass: this.pass, database: this.database, }; } } async connect() { if (exports._vDB && !(await exports._vDB.connect())) { Sql._saveLog(`Sql:connect() - Ошибка при подключении к БД.\n${exports._vDB.errors[0]}`); return false; } return true; } async isConnected() { try { if (exports._vDB && exports._vDB.dbConnect) { const client = await exports._vDB.dbConnect; await client.db().admin().ping(); return true; } return false; } catch (e) { return false; } } close() { if (exports._vDB) { exports._vDB.destroy(); exports._vDB = null; } } escapeString(text) { return text + ''; } async query(callback) { try { if (exports._vDB && exports._vDB.dbConnect) { const client = await exports._vDB.dbConnect; const db = client.db(exports._vDB.params?.database); const data = await callback(client, db); if (data.status) { return data.data; } Sql._saveLog(data.error + ''); return null; } else { Sql._saveLog('Не удалось выполнить запрос.'); return null; } } catch (err) { Sql._saveLog(err); if (exports._vDB) { exports._vDB.dbConnect = null; } return null; } } static _saveLog(errorMsg) { if (mmApp_1.mmApp.saveLog('sql.log', errorMsg)) { return true; } if (mmApp_1.mmApp.isDevMode) { console.warn('Sql.connect(): Не удалось создать/открыть файл!'); } return false; } } exports.Sql = Sql;