umbot
Version:
Universal bot(vk, telegram, viber) or skills for Yandex.Alisa, Маруся and sber
116 lines (115 loc) • 3.58 kB
JavaScript
;
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;