forked from codigoencasa/builderbot
-
Notifications
You must be signed in to change notification settings - Fork 10
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
1 parent
9311aa0
commit c9831d2
Showing
2 changed files
with
106 additions
and
106 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,106 @@ | ||
const mysql = require("mysql2"); | ||
|
||
class MyslAdapter { | ||
db; | ||
listHistory = []; | ||
credentials = { host: null, user: null, database: null, password: null }; | ||
|
||
constructor(_credentials) { | ||
this.credentials = _credentials; | ||
this.init().then(); | ||
} | ||
|
||
async init() { | ||
this.db = mysql.createConnection(this.credentials); | ||
|
||
await this.db.connect(async (error) => { | ||
if (!error) { | ||
console.log(`Solicitud de conexión a base de datos exitosa`); | ||
await this.checkTableExists(); | ||
} | ||
|
||
if (error) { | ||
console.log(`Solicitud de conexión fallida ${error.stack}`); | ||
} | ||
}); | ||
} | ||
|
||
getPrevByNumber = (from) => | ||
new Promise((resolve, reject) => { | ||
const sql = `SELECT * FROM history WHERE phone=${from} ORDER BY id DESC`; | ||
this.db.query(sql, (error, rows) => { | ||
if (error) { | ||
reject(error); | ||
} | ||
|
||
if (rows.length) { | ||
const [row] = rows; | ||
row.options = JSON.parse(row.options); | ||
resolve(row); | ||
} | ||
|
||
if (!rows.length) { | ||
resolve(null); | ||
} | ||
}); | ||
}); | ||
|
||
save = (ctx) => { | ||
const values = [ | ||
[ | ||
ctx.ref, | ||
ctx.keyword, | ||
ctx.answer, | ||
ctx.refSerialize, | ||
ctx.from, | ||
JSON.stringify(ctx.options), | ||
], | ||
]; | ||
const sql = | ||
"INSERT INTO history (ref, keyword, answer, refSerialize, phone, options ) values ?"; | ||
|
||
this.db.query(sql, [values], (err) => { | ||
if (err) throw err; | ||
console.log("Guardado en DB...", values); | ||
}); | ||
this.listHistory.push(ctx); | ||
}; | ||
|
||
createTable = () => | ||
new Promise((resolve) => { | ||
const tableName = "history"; | ||
|
||
const sql = `CREATE TABLE ${tableName} | ||
(id INT AUTO_INCREMENT PRIMARY KEY, | ||
ref varchar(255) NOT NULL, | ||
keyword varchar(255) NOT NULL, | ||
answer longtext NOT NULL, | ||
refSerialize varchar(255) NOT NULL, | ||
phone varchar(255) NOT NULL, | ||
options longtext NOT NULL) | ||
CHARACTER SET utf8mb4 COLLATE utf8mb4_General_ci`; | ||
|
||
this.db.query(sql, (err) => { | ||
if (err) throw err; | ||
console.log(`Tabla ${tableName} creada correctamente `); | ||
resolve(true); | ||
}); | ||
}); | ||
|
||
checkTableExists = () => | ||
new Promise((resolve) => { | ||
const sql = "SHOW TABLES LIKE 'history'"; | ||
|
||
this.db.query(sql, (err, rows) => { | ||
if (err) throw err; | ||
|
||
if (!rows.length) { | ||
this.createTable(); | ||
} | ||
|
||
resolve(!!rows.length); | ||
}); | ||
}); | ||
} | ||
|
||
module.exports = MyslAdapter; |
This file was deleted.
Oops, something went wrong.