-
-
Save raphab3/62b23eb0114fb2161a076eb83f8bbcd2 to your computer and use it in GitHub Desktop.
Connect Dialogflow with MySQL Database
This file contains hidden or 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
const mysql = require('mysql'); | |
function connectToDatabase(){ | |
const connection = mysql.createConnection({ | |
host : 'HOST', | |
user : 'USER', | |
password : 'PASSWORD', | |
database : 'DATABASE' | |
}); | |
return new Promise((resolve,reject) => { | |
connection.connect(); | |
resolve(connection); | |
}); | |
} | |
function queryDatabase(connection){ | |
return new Promise((resolve, reject) => { | |
connection.query('YOUR_SQL_QUERY', (error, results, fields) => { | |
resolve(results); | |
}); | |
}); | |
} | |
function insertIntoDatabase(connection, data){ | |
return new Promise((resolve, reject) => { | |
connection.query('INSERT INTO users SET ?', data, (error, results, fields) => { | |
resolve(results); | |
}); | |
}); | |
} | |
function updateDatabase(connection, data){ | |
return new Promise((resolve, reject) => { | |
connection.query(`UPDATE users SET ? WHERE email = ?`, [data, data.email], (error, results, fields) => { | |
resolve(results); | |
}); | |
}); | |
} | |
function deleteFromDatabase(connection, email){ | |
return new Promise((resolve, reject) => { | |
connection.query(`DELETE from users WHERE email = ?`, email, (error, results, fields) => { | |
resolve(results); | |
}); | |
}); | |
} | |
function handleReadFromMySQL(agent){ | |
const user_email = agent.parameters.email; | |
return connectToDatabase() | |
.then(connection => { | |
return queryDatabase(connection) | |
.then(result => { | |
console.log(result); | |
result.map(user => { | |
if(user_email === user.email){ | |
agent.add(`First Name: ${user.first_name} and Last Name: ${user.last_name}`); | |
} | |
}); | |
connection.end(); | |
}); | |
}); | |
} | |
function handleWriteIntoMysql(agent){ | |
const data = { | |
first_name: "test", | |
last_name: "user", | |
email: "[email protected]" | |
}; | |
return connectToDatabase() | |
.then(connection => { | |
return insertIntoDatabase(connection, data) | |
.then(result => { | |
agent.add(`Data inserted`); | |
connection.end(); | |
}); | |
}); | |
} | |
function handleUpdateMysql(agent){ | |
const data = { | |
first_name: "Anshul", | |
last_name: "Random", | |
email: "[email protected]" | |
}; | |
return connectToDatabase() | |
.then(connection => { | |
return updateDatabase(connection, data) | |
.then(result => { | |
agent.add(`Data updated`); | |
connection.end(); | |
}); | |
}); | |
} | |
function handleDeleteFromMysql(agent){ | |
const email = "[email protected]"; | |
return connectToDatabase() | |
.then(connection => { | |
return deleteFromDatabase(connection, email) | |
.then(result => { | |
agent.add(`Data deleted`); | |
connection.end(); | |
}); | |
}); | |
} | |
let intentMap = new Map(); | |
intentMap.set('getDataFromMySQL', handleReadFromMySQL); | |
intentMap.set('writeDataIntoMysql', handleWriteIntoMysql); | |
intentMap.set('updateMysql', handleUpdateMysql); | |
intentMap.set('deleteFromMysql', handleDeleteFromMysql); | |
agent.handleRequest(intentMap); |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment