MangoShelf/Components/webserver.js

109 lines
3.4 KiB
JavaScript

// Forces NodeJS to disable "Silent errors"
'use strict';
// Import things
const express = require('express');
const app = express();
const server = require('http').createServer(app);
const port = process.env.PORT || 3430;
const test = require('../testdatabase.json');
const bodyParser = require("body-parser");
var mysql = require('mysql');
var site;
// TODO: Add stuff for MySQL
var connection = mysql.createConnection({
host : '192.168.0.56',
user : 'mangosdemo',
password : 'lqklvok',
database : 'mangoshelfdb'
});
connection.query('SELECT * FROM stock', function (error, results, fields) {
if (error) throw error;
// connected!
console.log('MySQL connected!');
});
// Set the templates folder for the thingy
app.set('views', __dirname + '/../Templates');
app.set('view engine', 'ejs');
app.use(bodyParser.urlencoded({ extended: false }));
app.use(bodyParser.json());
// Makes it so that the Public folder mounts under /
app.use(express.static(__dirname + '/../Public'));
// Main page
app.get('/', function(req, res){
res.redirect('/stock')
// console.log(test.cars.Nissan[1].model)
});
app.get('/stock', function(req, res){
console.log('🌐 Client requested ' + req.url);
connection.query('SELECT * FROM stock', function (error, results, fields) {
if (error) throw error;
// connected!
//console.log(results);
res.render('index', { results, site: 2 });
console.log('✅ Client recieved ' + req.url);
});
// console.log(test.cars.Nissan[1].model)
});
app.get('/stock/new', function(req, res){
var results = null;
console.log('🌐 Client requested ' + req.url);
res.render('index', { results, site: 21 });
// console.log(test.cars.Nissan[1].model)
});
app.post('/api/live/inventory/add', function(req, res){
let name = req.body.name;
let desc = req.body.desc;
let status = req.body.status;
let category = req.body.category;
let amount = req.body.amount;
let location = req.body.location;
let orderid = req.body.orderid;
let notes = req.body.notes;
console.log('🌐 Client requested ' + req.url + ' with id ' + req.params.id);
console.log('✅ Client recieved ' + req.url);
var sql = "INSERT INTO stock (name, description, status, category, amount, location, orderid, notes) VALUES (?)";
var values = [name, desc, status, category, amount, location, orderid, notes];
connection.query(sql, [values], function (err, result) {
if (err) throw err;
console.log("Number of records inserted: " + result.affectedRows);
res.redirect('/stock');
});
if (name && desc && status && category && amount && location && orderid && notes) {
console.log('boop!');
}
// console.log(test.cars.Nissan[1].model)
});
app.get('/api/live/inventory/delete/:thinGid', function(req, res){
var idtodelete = req.params.thinGid;
console.log(idtodelete);
var sql = "DELETE FROM stock WHERE id = ?";
var values = [idtodelete];
connection.query(sql, [values], function (err, result) {
if (err) throw err;
console.log("Number of records inserted: " + result.affectedRows);
res.redirect('/stock');
});
});
// Simple way to expose a function
exports = module.exports = rws;
// rws = RunWebServer
function rws() {
server.listen(port, () => {
console.log('✅ Webserver is running ( %d )', port);
});
};