Save messages in Mysql or Json

This commit is contained in:
unknown
2022-03-14 14:17:28 -06:00
parent 5aaf761fce
commit 04982941a7
8 changed files with 124 additions and 4644 deletions

View File

@@ -1,4 +1,5 @@
const { getData, getReply } = require('./mysql')
const { getData, getReply, saveMessageMysql } = require('./mysql')
const { saveMessageJson } = require('./jsonDb')
const { getDataIa } = require('./diaglogflow')
const stepsInitial = require('../flow/initial.json')
const stepsReponse = require('../flow/response.json')
@@ -64,4 +65,24 @@ const getIA = (message) => new Promise((resolve, reject) => {
}
})
module.exports = { get, reply, getIA }
const saveMessage = ( message, date, trigger, number ) => new Promise( async (resolve, reject) => {
switch ( process.env.DATABASEMESSAGES ) {
case 'mysql':
resolve( await saveMessageMysql( message, date, trigger, number ) )
break;
case 'json':
resolve( await saveMessageJson( message, date, trigger, number ) )
break;
default:
break;
}
// if (process.env.DATABASE === 'dialogflow') {
// let resData = { replyMessage: '', media: null, trigger: null }
// getDataIa(message,(dt) => {
// resData = { ...resData, ...dt }
// resolve(resData)
// })
// }
})
module.exports = { get, reply, getIA, saveMessage }

20
adapter/jsonDb.js Normal file
View File

@@ -0,0 +1,20 @@
const Path = require('path')
const StormDB = require("stormdb");
const saveMessageJson = (message, date, trigger, number) => new Promise( async(resolve,reject) =>{
try {
const engine = new StormDB.localFileEngine( Path.join(__dirname, `/../chats/${number}.json`) );
const db = new StormDB(engine);
// set default db value if db is empty
db.default({ messages: [] });
// add new users entry
db.get("messages").push({ message, date, trigger });
db.save();
resolve('Saved')
} catch (error) {
console.log(error)
reject(error)
}
})
module.exports = { saveMessageJson }

View File

@@ -25,4 +25,47 @@ getReply = (option_key = '', callback) => connection.query(
callback(value)
});
module.exports = {getData, getReply}
getMessages = ( number ) => new Promise((resolve,reejct) => {
try {
connection.query(
`SELECT * FROM ${DATABASE_NAME}.response WHERE number = '${number}'`, (error, results) => {
if(error) {
console.log(error)
}
const [response] = results;
console.log(response)
const value = {
replyMessage:response?.replyMessage || '',
trigger:response?.trigger || '',
media:response?.media || ''
}
resolve(value)
})
} catch (error) {
}
})
saveMessageMysql = ( message, date, trigger, number ) => new Promise((resolve,reejct) => {
try {
connection.query(
`INSERT INTO ${DATABASE_NAME}.messages `+"( `message`, `date`, `trigger`, `number`)"+` VALUES ('${message}','${date}','${trigger}', '${number}')` , (error, results) => {
if(error) {
if( error.code === 'ER_NO_SUCH_TABLE' ){
connection.query( `CREATE TABLE ${DATABASE_NAME}.messages `+"( `date` DATE NOT NULL , `message` VARCHAR(450) NOT NULL , `trigger` VARCHAR(450) NOT NULL , `number` VARCHAR(50) NOT NULL ) ENGINE = InnoDB", async (error, results) => {
setTimeout( async () => {
return resolve( await this.saveMessageMysql( message, date, trigger, number ) )
}, 150)
})
}
}
console.log('Saved')
console.log( results )
resolve(results)
})
} catch (error) {
}
})
module.exports = {getData, getReply, saveMessageMysql}