From 7a73162607544204032aa66cce755daf21edebda Mon Sep 17 00:00:00 2001 From: Matt Strapp Date: Tue, 24 May 2022 11:18:46 -0500 Subject: Graduate Signed-off-by: Matt Strapp --- csci4131/hw7/dbio.js | 136 +++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 136 insertions(+) create mode 100644 csci4131/hw7/dbio.js (limited to 'csci4131/hw7/dbio.js') diff --git a/csci4131/hw7/dbio.js b/csci4131/hw7/dbio.js new file mode 100644 index 0000000..96faf93 --- /dev/null +++ b/csci4131/hw7/dbio.js @@ -0,0 +1,136 @@ +var mysql = require("mysql"); +var bcrypt = require("bcrypt"); +var fs = require("fs"); +var xml2js = require("xml2js"); +var parser = new xml2js.Parser(); +var conInfo; +var connection; + +fs.readFile(__dirname + '/dbconfig.xml', function (err, data) { + if (err) throw err; + parser.parseString(data, function (err, result) { + if (err) throw err; + conInfo = result; + }); + connection = mysql.createConnection({ + host: conInfo.dbconfig.host[0], + user: conInfo.dbconfig.user[0], + password: conInfo.dbconfig.password[0], + database: conInfo.dbconfig.database[0], + port: conInfo.dbconfig.port[0] + }); + + connection.connect(function (err) { + if (err) { + throw err; + }; + console.log("Connected to MYSQL database!"); + }); +}); + + + +function passcheck(user,pass) { + return new Promise(function(resolve, reject) { + connection.query('SELECT * FROM tbl_accounts', function(err, rows, fields) { + let ret = []; + if (err) { + return reject(err); + } + for (var i = 0; i < rows.length; i++) { + if (rows[i].acc_login.localeCompare(user) === 0) { + if (bcrypt.compareSync(pass, rows[i].acc_password)) { + ret += rows[i]; + } + } + } + resolve(ret); + }); + }); +} + +function getContacts() { + return new Promise (function(resolve, reject) { + let conTab = [] + connection.query('SELECT * FROM tbl_contacts', function (err, rows, fields) { + if (err) throw err; + resolve(rows); + }); + }); +} + +function addContacts(contact) { + let newCon = { + name: contact.name, + category: contact.category, + location: contact.location, + contact_info: contact.contact, + email: contact.email, + website: contact.website, + } + return new Promise (function (resolve, reject) { + connection.query('SELECT * FROM tbl_contacts where name=?', contact.name, function(err, rows, fields) { + if (err) throw err; + console.log("Table found") + if (rows.length > 0) { + // Duplicate + console.log("found Duplicate name!"); + resolve(false); + } else { + connection.query('INSERT tbl_contacts SET ?', newCon, function (err, result) { //Parameterized insert + if (err) throw err; + console.log("Values inserted."); + resolve(true); + }); + } + }); + }); +} + + + +function editContact(contact) { + let edit = { + name: contact.name, + category: contact.category, + location: contact.location, + contact_info: contact.contact, + email: contact.email, + website: contact.website, + } + + return new Promise(function (resolve, reject) { + connection.query('SELECT * FROM tbl_contacts where name=?', contact.name, function (err, rows, fields) { + if (err) throw err; + if (rows.length == 0) { + console.log("Name Changed!"); + resolve(false); + } else { + connection.query('UPDATE tbl_contacts SET ? WHERE name=?', [edit, edit.name], function(err, result) { + if (err) throw err; + console.log("Value edited successfully?") + resolve(true); + }); + } + }); + }); +} + +function deleteContact(contact) { + return new Promise(function(resolve, reject) { + connection.query('DELETE FROM tbl_contacts WHERE name=?', contact, function (err, result) { + if (err) throw err; + console.log("Row deleted!") + resolve(); + }) + }) +} + + + + +exports.addContact = addContacts; +exports.query = passcheck; +exports.getContacts = getContacts; +exports.deleteContact = deleteContact; +exports.editContact = editContact; -- cgit v1.2.3