From 8b0aa91dea95fb26bd2df57d6d96520acb101a3d Mon Sep 17 00:00:00 2001 From: Patrick McDonagh Date: Thu, 24 Mar 2016 18:30:12 -0500 Subject: [PATCH] Switching server-side scripts over to coffeescript --- app.js | 191 ----- routes/json_sqlite.js | 1532 ----------------------------------------- 2 files changed, 1723 deletions(-) delete mode 100644 app.js delete mode 100644 routes/json_sqlite.js diff --git a/app.js b/app.js deleted file mode 100644 index eea8779..0000000 --- a/app.js +++ /dev/null @@ -1,191 +0,0 @@ - -var DBTYPE = 'SQLite'; // OR "MySQL" -var express = require('express'), - path = require('path'), - fs = require('fs'), - //favicon = require('serve-favicon'), - logger = require('morgan'), - methodOverride = require('method-override'), - bodyParser = require('body-parser'), - errorHandler = require('errorhandler'); - -var app = express(); -var json; - -/** -* Configuration -*/ -if (DBTYPE == "MySQL"){ - var mysql = require('mysql'); - var db_config = { - host: 'localhost', - user: 'website', - password: 'henrypump' - }; - var handleDisconnect = function () { - console.log("Handling db disconnect gracefully"); - app.locals.connection = mysql.createConnection(db_config); - app.locals.connection.connect(function (err) { - if (err) { - console.log('error when connecting to db:', err); - setTimeout(handleDisconnect, 2000); - } - }); - app.locals.connection.on('error', function (err) { - console.log('db error', err); - if (err.code === 'PROTOCOL_CONNECTION_LOST') { - handleDisconnect(); - } else { - throw err; - } - }); - }; - - handleDisconnect(); - json = require('./routes/json.js'); -} - -if (DBTYPE == "SQLite"){ - json = require('./routes/json_sqlite.js'); -} - -app.set('port', process.env.PORT || 80); -app.set('views', path.join(__dirname, 'views')); -app.engine('.html', require('ejs').renderFile); -app.set('view engine', 'html'); -//app.use(favicon(__dirname + '/public/img/favicon.ico')); -app.use(logger('dev')); -app.use(methodOverride()); -app.use(bodyParser.json()); -app.use(bodyParser.urlencoded({extended: true})); - -//app.use(express["static"](path.join(__dirname, 'public'))); -app.use(express.static(path.join(__dirname, 'public'))); - -/** -* Routes -*/ - -//index = require('./routes/index.js'); - -var angular = function(req, res) { - res.render('angularIndex'); -}; - -app.get('/json/all/:date', json.allCards); -app.get('/json/page/:date/:page/:numPerPage', json.filePage); -app.get('/json/count/:date', json.countDateFiles); -app.get('/json/latest/:num', json.cardLatestX); -app.get('/json/latestCard', json.latestCardData); -app.get('/json/latest', json.cardLatestX); -app.get('/json/all', json.allDates); -app.get('/json/between/:start/:end', json.findBetweenDateTime); -app.get('/json/byID/:date/:card_id', json.getCardByCardID); -app.get('/json/card/:id', json.singleCard); -app.get('/csv/:id', json.cardCSV); -app.get('/json/status', json.status); -app.get('/json/setup', json.getSetup); -app.get('/json/totals', json.getCurrentTotals); - - -// -- Gauge-Off Data -- // -app.get('/json/history/all', json.historyAll); -app.get('/json/history', json.historyLatest); - -// -- Well Test Data -- // -//app.get('/json/well_test/all', json.wellTestAll); -//app.get('/json/well_test', json.wellTestLatest); - -// -- Event List -- // -app.get('/json/event_list/all', json.eventListAll); -app.get('/json/event_list/:numEvents', json.eventList); -app.get('/json/event_list', json.eventList); - -// -- Well Configuration Backups -- // -app.get('/json/backups/:file', json.parseWellBackup); -app.get('/json/backups', json.getWellBackups); - -// -- Tag Data -- // -app.get('/json/tags/get/status', json.statusTagData); -app.get('/json/tags/get/:tagName', json.getTagValue); -app.get('/json/tags/set/:tagName/:value/:mode', json.setTagValue); -app.get('/json/tags/set/:tagName/:value', json.setTagValue); - -// -- Firmware Updating -- // -app.get('/json/maint/updateFiles/:force', json.updateFiles); -app.get('/json/maint/updateFiles', json.updateFiles); - -// -- Fluid Shots -- // -app.get('/json/fluid_shot/get/deleted', json.getDeletedFluidShots); -app.get('/json/fluid_shot/get', json.getFluidShots); -app.post('/json/fluid_shot/post', json.postFluidShot); -app.post('/json/fluid_shot/delete', json.deleteFluidShot); -app.post('/json/fluid_shot/undelete', json.undeleteFluidShot); -app.post('/json/fluid_shot/update', json.updateFluidShot); - -//-- Well Tests -- // -app.get('/json/well_test/get/deleted', json.getDeletedWellTests); -app.get('/json/well_test/get', json.getWellTests); -app.post('/json/well_test/post', json.postWellTest); -app.post('/json/well_test/delete', json.deleteWellTest); -app.post('/json/well_test/undelete', json.undeleteWellTest); -app.post('/json/well_test/update', json.updateWellTest); - -// -- Notes -- // -app.get('/json/notes/get/types', json.getNoteTypes); -app.get('/json/notes/get/deleted', json.getDeletedNotes); -app.get('/json/notes/get', json.getNotes); -app.post('/json/notes/post', json.postNote); -app.post('/json/notes/delete', json.deleteNote); -app.post('/json/notes/undelete', json.undeleteNote); -app.post('/json/notes/update', json.updateNote); - -// -- Python Scripts -- // -app.get('/json/pythonStatus', json.checkPythonScripts); -app.get('/json/pythonRestart', json.restartPythonScripts); - -app.get('/json/:folder/:file', json.singleCardOldway); -app.get('/json/:folder/:file/taper', json.taper); -app.post('/json/cards', json.multipleCards); -app.post('/setup', json.updateSetup); - -//-- Tag Values -- // -app.get('/json/tagvalues', json.getTagValues); - -app.get('*', angular); - -/** -* Start Server -*/ - -connectionsArray = []; - -s_port = 3000; - -var server = app.listen(s_port, function () { - var host = server.address().address; - var port = server.address().port; - - console.log('POConsole listening at http://%s:%s', host, port); - console.log("Database Type is %s", DBTYPE); -}); - -// app.listen(port), function() { -// console.log('Listening on port ' + port); -// } -// -// io = require('socket.io').listen(); -// -// io.sockets.on('connection', function(socket) { -// console.log('Number of connections:' + connectionsArray.length); -// socket.on('disconnect', function() { -// var socketIndex; -// socketIndex = connectionsArray.indexOf(socket); -// console.log('socket = ' + socketIndex + ' disconnected'); -// if (socketIndex >= 0) { -// connectionsArray.splice(socketIndex, 1); -// } -// }); -// console.log('A new socket is connected!'); -// connectionsArray.push(socket); -// }); diff --git a/routes/json_sqlite.js b/routes/json_sqlite.js deleted file mode 100644 index 0e790cd..0000000 --- a/routes/json_sqlite.js +++ /dev/null @@ -1,1532 +0,0 @@ -/* jshint multistr: true */ - -var fileLocation = '/mnt/usb' -var dbFile = '/mnt/usb/testdata.db' - -// HELPER FUNCTIONS -var pad = function (num) { - return ('0' + num.toString()).slice(-2) -} -var pocDateFormat = function (dtime) { - //returns the date in the format YYYYMMDD from a date Object - var regexString = /(\d{4})-(\d{2})-(\d{2}) (\d{2}):(\d{2}):(\d{2}).(\d*)/; - var dateParts = regexString.exec(dtime); - return dateParts[1] + dateParts[2] + dateParts[3]; - // return dtime.getFullYear().toString() + pad(dtime.getMonth()+1) + pad(dtime.getDate()); -}; -var pocDateTimeFormat = function(dtime){ - //returns the datetime in the format YYYYMMDD_hhmmss from a date Object - var regexString = /(\d{4})-(\d{2})-(\d{2}) (\d{2}):(\d{2}):(\d{2}).(\d*)/; - var dateParts = regexString.exec(dtime); - return dateParts[1] + dateParts[2] + dateParts[3] + "_" + dateParts[4] + dateParts[5] + dateParts[6]; - // return dtime.getFullYear().toString() + pad(dtime.getMonth()+1) + pad(dtime.getDate()) + "_" + pad(dtime.getHours()) + pad(dtime.getMinutes()) + pad(dtime.getMinutes()); -}; - -var createFilenameFromCardObject = function(c){ - //requires Card_ID, Stroke_Time, Card_Type, and Fillage_Percent columns. - var dtPart = pocDateTimeFormat(c.Stroke_Time); - var fillString = c.Fillage_Percent.toString().replace(".", "-"); - return (dtPart + "_" + c.Card_ID.toString() + "_" + c.Card_Type + "_" + fillString); -}; - -var mysqlDateFormat = function(dString){ - //converts a pocDateFormat string to YYYY-MM-DD for use in MySQL - var regexString = /(\d{4})(\d{2})(\d{2})/; - var mysqlDate = regexString.exec(dString); - return (mysqlDate[1] + "-" + mysqlDate[2] + "-" + mysqlDate[3]); -}; - -var mysqlDateTimeFormat = function(dString){ - //converts a pocDateTimeFormat string to a full-blown date object - var regexString = /(\d{4})(\d{2})(\d{2})_(\d{2})(\d{2})(\d{2})/; - var m = regexString.exec(dString); - return (new Date(m[1], m[2], m[3], m[4], m[5], m[6], 0)); -}; - -var splitDateIntoObj = function(dString){ - var regexString = /(\d{4})(\d{2})(\d{2})/; - var dList = regexString.exec(dString); - var d = { - year: dList[1], - month: dList[2], - day: dList[3] - }; - return d; -}; - -//DATA FUNCTIONS - -var readTaperData = function(file_loc, cb){ - var fs = require('fs'); - var csv = require('ya-csv'); - var df = []; - var cTaper = {}; - var unitConfig = {}; - var tapers ={}; //new Object; - var reader = new csv.createCsvFileReader(fileLocation + '/CSV/TAPER/'+file_loc, { - 'separator': ',', - 'quote': '"', - 'escape': '"', - 'comment': '', - }); - var writer = new csv.CsvWriter(process.stdout); - reader.addListener('data', function(data) { - //writer.writeRecord([ data ]) - if (data[0] === "Taper"){cTaper.TaperID = parseInt(data[1]); var last_taper = cTaper.TaperID;} - else if (data[0] === "Length"){cTaper.Length = parseFloat(data[1]);} - else if (data[0] === "Diameter"){cTaper.Diameter = parseFloat(data[1]);} - else if (data[0] === "Material"){cTaper.Material = data[1];} - else if (data[0] === "Weight_Per_Foot"){cTaper.Weight_Per_Foot = parseFloat(data[1]);} - else if (data[0] === "Youngs_Modulus"){cTaper.Youngs_Modulus = parseFloat(data[1]);} - else if (data[0] === "Damping_Factor"){cTaper.Damping_Factor = parseFloat(data[1]);} - else if (data[0] === "Area"){cTaper.Area = parseFloat(data[1]);} - else if (data[0] === "Rod_Depth"){cTaper.Rod_Depth = parseFloat(data[1]);} - else if (data[0] === "Pressure"){cTaper.Pressure = parseFloat(data[1]);} - else if (data[0] === "Buoyant_Force"){cTaper.Buoyant_Force = parseFloat(data[1]);} - else if (data[0] === "Rod_Weight"){cTaper.Rod_Weight = parseFloat(data[1]);} - else if (data[0] === "Force"){cTaper.Force = parseFloat(data[1]);} - else if (data[0] === "Stretch"){cTaper.Stretch = parseFloat(data[1]);} - else if ((data[0] ==="") && (data[1]==="")){tapers[parseInt(cTaper.TaperID)] = cTaper; cTaper = {};} - else if (data[0] === "Pump_Diameter"){unitConfig.Pump_Diameter = parseFloat(data[1]);tapers.Unit = unitConfig;} - }); - - - reader.on('end', function(){ - //console.log(tapers); - cb(tapers); - - }); -}; - - -var findTaperFile = function(card_date, cb){ - var fs = require('fs'); - var card_year = parseInt(card_date.slice(0,4)); - var card_month = parseInt(card_date.slice(4,6)); - var card_day = parseInt(card_date.slice(6,8)); - var card_hour = parseInt(card_date.slice(9,11)); - var card_min = parseInt(card_date.slice(11,13)); - var card_sec = parseInt(card_date.slice(13,15)); - - var file_list = []; - var current_file = []; - var prev_file = []; - var fprefix = fileLocation + '/CSV/TAPER/'; - - function getFilesizeInBytes(filename) { - var stats = fs.statSync(filename); - var fileSizeInBytes = stats.size; - return fileSizeInBytes; - } - - fs.readdir(fprefix, function(err,files){ - if (err) {throw err;} - for (var i= 0; i < files.length; i++){ - var split_name = files[i].split("_"); - if (split_name[0] === "TAPER"){ - if (getFilesizeInBytes(fprefix +files[i]) > 0){ - file_list.push(files[i]); - } - } - } - file_list.sort(); - file_list.reverse(); - var correctFile= ""; - for (var fn=0; fn ?)"); - lastIDquery.all(found_id, function(lerr, lrows){ - lastIDquery.finalize(); - if (lerr){ - db.close(); - console.log(lerr); - res.json({status:'error', message:lerr}); - } else { - var cardQuery; - if (lrows.length > 0) { - // We are not being asked for the current day - var last_id = lrows[0].first_id; - cardQuery = db.prepare("SELECT id, Card_ID, Stroke_Time, Fillage_Percent, Card_Type FROM card_history WHERE id > ? AND id <= ? ORDER BY id DESC"); - cardQuery.all(first_id, last_id, function(cerr, crows){ - cardQuery.finalize(); - db.close(); - if (err) { - console.log(err); - res.json({status:"error", message:cerr}); - } else { - res.json({status:"OK", date:fdate, cards:crows}); - } - }); - } else { - // We are being asked for the current day - cardQuery = db.prepare("SELECT id, Card_ID, Stroke_Time, Fillage_Percent, Card_Type FROM card_history WHERE id > ? ORDER BY id DESC"); - cardQuery.all(first_id, function(cerr, crows){ - cardQuery.finalize(); - db.close(); - if (err) { - console.log(err); - res.json({status:"error", message:cerr}); - } else { - res.json({status:"OK", date:fdate, cards:crows}); - } - }); - } - } - }); - } - }); - }); -}; - -exports.filePage = function(req,res){ - var sqlite3 = require('sqlite3').verbose(); - var db = new sqlite3.Database(dbFile); - - var date = mysqlDateFormat(req.params.date.toString()); - var page = req.params.page.toString(); - var numPerPage = req.params.numPerPage.toString(); - - db.serialize(function(){ - var query = db.prepare("SELECT id, Card_ID, Stroke_Time, Fillage_Percent, Card_Type FROM card_history WHERE id <= (SELECT id FROM card_history WHERE DATE(Stroke_Time) = ? ORDER BY id DESC LIMIT 1) - (? * (? - 1)) and id > ((SELECT id FROM card_history WHERE DATE(Stroke_Time) = ? ORDER BY id DESC LIMIT 1) - (? * (? - 1)) - ?) ORDER BY id DESC"); - query.all(date, numPerPage, page, date, numPerPage, page, numPerPage, function(err, rows){ - query.finalize(); - db.close(); - if (err){ - console.log(err); - res.json({status:"error", message:err, query:query}); - } else { - res.json({status:"OK", date: req.params.date.toString(), cards:rows}); - } - }); - }); -}; - -exports.countDateFiles = function(req, res){ - var sqlite3 = require('sqlite3').verbose(); - var db = new sqlite3.Database(dbFile); - - var date = mysqlDateFormat(req.params.date.toString()); - db.serialize(function(){ - var query = db.prepare("SELECT COUNT(id) as cnt FROM card_history WHERE DATE(Stroke_Time) = ?"); - query.all(date, function(err, rows){ - query.finalize(); - db.close(); - if (err){ - console.log(err); - res.json({status:'error', message:err, query:query}); - } else { - res.json({status:"OK", date: req.params.date.toString(), count:rows[0].cnt}); - } - }); - }); -}; - -exports.cardLatestX = function(req,res){ - //attempts to find the filenames of the latest X cards. If there are less than X cards, returns as many as possible. - //if no number of cards is supplied, returns the latest card - var sqlite3 = require('sqlite3').verbose(); - var db = new sqlite3.Database(dbFile); - - var numCards = 1; - if (req.params.num > 1){ - numCards = parseInt(req.params.num); - } - db.serialize(function(){ - var query = db.prepare("SELECT id, Card_ID, Stroke_Time, Card_Type, Fillage_Percent FROM card_history WHERE id > ((SELECT MAX(id) FROM card_history) - ?)"); - query.all(numCards, function(err, rows){ - query.finalize(); - db.close(); - if (err){ - console.log(err); - res.json({status:'error', message:err, query:query}); - } else { - var filenames = rows.map(createFilenameFromCardObject); - var ids = rows.map(function(x){ - return x.id; - }); - res.json({status:"OK", file: filenames[0] , folder:pocDateFormat(rows[0].Stroke_Time), numCards: rows.length, cards:filenames.reverse(), ids: ids.reverse()}); - } - }); - }); -}; - -exports.latestCardData = function(req, res){ - //Gets right to the point and returns the data for the latest card - var sqlite3 = require('sqlite3').verbose(); - var db = new sqlite3.Database(dbFile); - - var query = 'SELECT * FROM card_history WHERE id = (SELECT MAX(id) FROM card_history);'; - db.serialize(function(){ - db.all(query, function(err, rows){ - db.close(); - if (err){ - console.log(err); - res.json({status:'error', message:err, query:query}); - } else { - rows[0].Surface_Position = rows[0].Surface_Position.toString().split(',').map(function(x){return parseFloat(x);}); - rows[0].Surface_Load = rows[0].Surface_Load.toString().split(',').map(function(x){return parseFloat(x);}); - rows[0].Downhole_Position = rows[0].Downhole_Position.toString().split(',').map(function(x){return parseFloat(x);}); - rows[0].Downhole_Load = rows[0].Downhole_Load.toString().split(',').map(function(x){return parseFloat(x);}); - res.json({status:"OK", date: pocDateFormat(rows[0].Stroke_Time), card_data: rows[0]}); - } - }); - }); -}; - -exports.findBetweenDateTime = function(req, res){ - //returns all filenames between a given start and end time - var sqlite3 = require('sqlite3').verbose(); - var db = new sqlite3.Database(dbFile); - - var mStart = mysqlDateTimeFormat(req.paramms.start); - var mEnd = mysqlDateTimeFormat(req.params.end); - db.serialize(function(){ - var query = db.prepare("SELECT id, Stroke_Time, Card_ID, Fillage_Percent, Card_Type FROM card_history WHERE Stroke_Time < ? AND Stroke_Time >= ? ORDER BY Stroke_Time DESC"); - query.all(mEnd, mStart, function(err, rows){ - query.finalize(); - db.close(); - if (err){ - console.log(err); - res.json({error:err, query:query}); - } else { - res.json({status:"OK", files:rows.map(createFilenameFromCardObject)}); - } - }); - }); -}; - -exports.singleCard = function( req, res ) { - //returns all the data for a single card given it's id (db id) - var sqlite3 = require('sqlite3').verbose(); - var db = new sqlite3.Database(dbFile); - - var id = req.params.id; - db.serialize(function(){ - var query = db.prepare("SELECT * FROM card_history WHERE id = ?"); - query.all(id, function(err, rows){ - query.finalize(); - db.close(); - if (err){ - console.log(err); - res.json({status:'error', message:err, query:query}); - } else { - if (rows.length > 0){ - rows[0].Surface_Position = rows[0].Surface_Position.toString().split(',').map(function(x){return parseFloat(x);}); - rows[0].Surface_Load = rows[0].Surface_Load.toString().split(',').map(function(x){return parseFloat(x);}); - rows[0].Downhole_Position = rows[0].Downhole_Position.toString().split(',').map(function(x){return parseFloat(x);}); - rows[0].Downhole_Load = rows[0].Downhole_Load.toString().split(',').map(function(x){return parseFloat(x);}); - - res.json({status:"OK", date: pocDateFormat(rows[0].Stroke_Time), card_data: rows[0]}); - } else { - res.json({status:'error', message:"no cards found with that id"}); - } - } - }); - }); -}; - -exports.singleCardOldway = function( req, res ) { - //returns all the data for a single card given its folder(date) and filename - var sqlite3 = require('sqlite3').verbose(); - var db = new sqlite3.Database(dbFile); - - var date = mysqlDateFormat(req.params.folder); - var card_id = parseInt(req.params.file.split("_")[2]); - db.serialize(function(){ - var query = db.prepare("SELECT * FROM card_history WHERE DATE(Stroke_Time) = ? AND Card_ID = ?"); - query.all(date, card_id, function(err, rows){ - query.finalize(); - db.close(); - if (err){ - console.log(err); - res.json({status:"error", message:err, query:query}); - } else { - rows[0].Surface_Position = rows[0].Surface_Position.toString().split(',').map(function(x){return parseFloat(x);}); - rows[0].Surface_Load = rows[0].Surface_Load.toString().split(',').map(function(x){return parseFloat(x);}); - rows[0].Downhole_Position = rows[0].Downhole_Position.toString().split(',').map(function(x){return parseFloat(x);}); - rows[0].Downhole_Load = rows[0].Downhole_Load.toString().split(',').map(function(x){return parseFloat(x);}); - - res.json({status:"OK", date: pocDateFormat(rows[0].Stroke_Time), card_data: rows[0]}); - } - }); - }); -}; - -exports.getCardByCardID = function(req, res){ - //returns all the data for a card given its date and Card_ID - var sqlite3 = require('sqlite3').verbose(); - var db = new sqlite3.Database(dbFile); - - var cardID = req.params.card_id; - var fdate = req.params.date; - - db.serialize(function(){ - var query = db.prepare("SELECT * FROM card_history WHERE DATE(Stroke_Time) = ? AND Card_ID = ? ORDER BY Stroke_Time DESC"); - query.all(mysqlDateFormat(fdate), cardID, function(err, rows){ - query.finalize(); - db.close(); - if (err){ - console.log(err); - res.json({status:"error", message:err, query:query}); - } else { - if (rows.length > 0){ - rows[0].Surface_Position = rows[0].Surface_Position.toString().split(',').map(function(x){return parseFloat(x);}); - rows[0].Surface_Load = rows[0].Surface_Load.toString().split(',').map(function(x){return parseFloat(x);}); - rows[0].Downhole_Position = rows[0].Downhole_Position.toString().split(',').map(function(x){return parseFloat(x);}); - rows[0].Downhole_Load = rows[0].Downhole_Load.toString().split(',').map(function(x){return parseFloat(x);}); - - res.json({status:"OK", date: rows[0].Stroke_Time.getFullYear().toString() + pad(rows[0].Stroke_Time.getMonth()+1) + pad(rows[0].Stroke_Time.getDate()), card_data: rows[0]}); - } - else { - res.json({status:"error", message:"No cards found for those parameters."}); - } - } - }); - }); -}; - -exports.multipleCards = function( req, res ) { - //Returns all the data for multiple cards - var sqlite3 = require('sqlite3').verbose(); - var db = new sqlite3.Database(dbFile); - - var ids = req.body.ids; - var idString = ids.join(); - db.serialize(function(){ - var query = db.prepare("SELECT * FROM card_history WHERE id IN (?)"); - query.all(idString, function(err, rows){ - query.finalize(); - db.close(); - if (err){ - console.log(err); - res.json({status:'error', message:err}); - } else { - if (rows.length > 0){ - res.json({status:"OK", - cards: rows.map(function(r){ - r.Surface_Position = r.Surface_Position.toString().split(',').map(function(x){return parseFloat(x);}); - r.Surface_Load = r.Surface_Load.toString().split(',').map(function(x){return parseFloat(x);}); - r.Downhole_Position = r.Downhole_Position.toString().split(',').map(function(x){return parseFloat(x);}); - r.Downhole_Load = r.Downhole_Load.toString().split(',').map(function(x){return parseFloat(x);}); - return r; - }) - }); - } - else { - res.json({status:"error", message:"No cards found for those parameters."}); - } - } - }); - }); -}; - -exports.cardSurfaceOnly = function( req, res ) { - //returns only the surface datea for a card given its db id - var sqlite3 = require('sqlite3').verbose(); - var db = new sqlite3.Database(dbFile); - - var id = req.params.id; - db.serialize(function(){ - var query = db.prepare("SELECT id, Stroke_Time, Card_ID, Surface_Position, Surface_Load FROM card_history WHERE id = ?"); - query.get(id, function(err, rows){ - query.finalize(); - db.close(); - if (err){ - res.json({status: "error", message: err}); - } else { - rows[0].Surface_Position = rows[0].Surface_Position.toString().split(',').map(function(x){return parseFloat(x);}); - rows[0].Surface_Load = rows[0].Surface_Load.toString().split(',').map(function(x){return parseFloat(x);}); - res.json({status:"OK", date: rows[0].Stroke_Time.getFullYear().toString() + pad(rows[0].Stroke_Time.getMonth()+1) + pad(rows[0].Stroke_Time.getDate()), card_data: rows[0]}); - } - }); - }); -}; - -//TODO FINISH THIS FUNCTION -exports.cardDataOnly = function( req, res ) { - //retuns the only the card data (no surface or downhole cards) given its db id - var fn = req.params.file; - var folder = req.params.folder; - var file = folder + "/"+fn; - readCardData(file, function(result){ - res.json({status:"OK", fn: fn, folder:folder, card_data: result.contents}); - }); -}; - -exports.cardDownholeOnly = function( req, res ) { - //returns only the downhole data for a card given its db id - var sqlite3 = require('sqlite3').verbose(); - var db = new sqlite3.Database(dbFile); - - var id = req.params.id; - db.serialize(function(){ - var query = db.prepare("SELECT id, Stroke_Time, Card_ID, Downhole_Position, Downhole_Load FROM card_history WHERE id = ?"); - query.all(id, function(err, rows){ - query.finalize(); - db.close(); - if (err){ - res.json({status:"error", message:err}); - } else { - rows[0].Downhole_Position = rows[0].Downhole_Position.toString().split(',').map(function(x){return parseFloat(x);}); - rows[0].Downhole_Load = rows[0].Downhole_Load.toString().split(',').map(function(x){return parseFloat(x);}); - res.json({status:"OK", date: rows[0].Stroke_Time.getFullYear().toString() + pad(rows[0].Stroke_Time.getMonth()+1) + pad(rows[0].Stroke_Time.getDate()), card_data: rows[0]}); - } - }); - }); -}; - -exports.cardCSV = function (req, res) { - var sqlite3 = require('sqlite3').verbose(); - var db = new sqlite3.Database(dbFile); - - var dbid = req.params.id; - db.serialize(function(){ - var query = db.prepare("SELECT * FROM card_history WHERE id = ?"); - var csvString = ""; - query.all(dbid, function (err, rows) { - query.finalize(); - db.close(); - if (err) { - console.log({status:"error", message:err}); - res.json({status:"error", message:err}); - } else { - var filenamecsv = createFilenameFromCardObject(rows[0]); - for (var key in rows[0]){ - if (rows[0].hasOwnProperty(key)) { - csvString += key + "," + rows[0][key] + "\n"; - } - } - res.set('Content-Type', 'text/csv'); - res.set('Content-Disposition', "attachment;filename="+filenamecsv + ".csv"); - res.send(csvString); - } - }); - }); -}; - -//TODO CREATE A DB TABLE FOR TAPER DATA -exports.taper = function( req, res ) { - var fn = req.params.file; - var folder = req.params.folder; - var file = folder + "/"+fn; - - var fn_split = fn.split("_"); - readCardData(file, function(result){ - var file_date = fn_split[1].slice(0,15); - findTaperFile(file_date, function(ret_fn){ - console.log(ret_fn); - if (ret_fn === "error"){ - res.json({status:"error"}); - } else { - readTaperData(ret_fn, function(tresults){ - //console.log(tresults); - res.json({status:"OK", fn: fn, taper:tresults}); - }); - } - }); - }); -} ; - -exports.status = function(req, res){ - //returns the current run status, datetime, last card ID, fill percent, fluid level, and stroke production - var fs = require("fs"); - var parseStatus = function(){ - fs.readFile(fileLocation + "/status.txt", 'utf8', function(err, data){ - if (err) {console.log(err);} - if (data !== ""){ - var statusRegex = /(\d{4})(\d{2})(\d{2})_(\d{2})(\d{2})(\d{2})-->(\d*)\n(\d*),(\d*.\d*),(\d*.\d*),(\d*.\d*)/; - var statusData = statusRegex.exec(data); - var statusObj = { - date: statusData[1]+statusData[2]+statusData[3]+"_"+statusData[4]+statusData[5]+statusData[6], - ISOdate: new Date(statusData[1], parseInt(statusData[2])-1, statusData[3], statusData[4], statusData[5], statusData[6]), - status: parseInt(statusData[7]), - cardID: parseInt(statusData[8]), - fillPercent: parseFloat(statusData[9]), - fluidLevel:parseFloat(statusData[10]), - strokeProduction:parseFloat(statusData[11]) - }; - res.json(statusObj); - return "Found"; - } else { - return null; - } - }); - }; - - var checkStatus = function(){ - var stat = parseStatus(); - if (stat === null){ - console.log("status null"); - setTimeout(function(){ - checkStatus(); - },500); - } - }; - checkStatus(); -}; - -exports.historyLatest = function(req,res){ - //returns the latest gauge off data recorded - var sqlite3 = require('sqlite3').verbose(); - var db = new sqlite3.Database(dbFile); - var query = 'SELECT * FROM Hist_Day ORDER BY id DESC LIMIT 1;'; - db.serialize(function(){ - db.all(query, function(err, rows) { - db.close(); - if (err) { - console.log({status:"error", message:err, query:query}); - res.json({status:'error', message:err, query:query}); - } else { - res.json({status:"OK", hist:rows[0]}); - } - }); - }); -}; - -exports.wellTestLatest = function(req,res){ - var sqlite3 = require('sqlite3').verbose(); - var db = new sqlite3.Database(dbFile); - - var query = 'SELECT * FROM Well_Test ORDER BY id DESC LIMIT 1;'; - db.serialize(function(){ - db.all(query, function(err, rows) { - db.close(); - if (err) { - console.log({error:err, query:query}); - res.json({error:err, query:query}); - } else { - res.json({status:"OK", wellTest:rows[0]}); - } - }); - }); -}; - -exports.eventList = function(req,res){ - var sqlite3 = require('sqlite3').verbose(); - var db = new sqlite3.Database(dbFile); - - var numEvents = 10; - if (req.params.numEvents){ - numEvents = req.params.numEvents; - } - - db.serialize(function(){ - var query = db.prepare('SELECT * FROM Event_List ORDER BY id DESC LIMIT ?'); - query.all(numEvents, function(err, rows) { - query.finalize(); - db.close(); - if (err) { - console.log({status:"error", message:err, query:query}); - res.json({status:"error", message:err, query:query}); - } else { - res.json({status:"OK", events:rows}); - } - }); - }); -}; - -exports.eventListAll = function(req,res){ - var sqlite3 = require('sqlite3').verbose(); - var db = new sqlite3.Database(dbFile); - - var query = 'SELECT * FROM Event_List ORDER BY id DESC'; - db.serialize(function(){ - db.all(query, function(err, rows) { - db.close(); - if (err) { - console.log({error:err, query:query}); - res.json({status:"error", message:err, query:query}); - } else { - res.json({status:"OK", events:rows}); - } - }); - }); -}; - -exports.historyAll = function(req,res){ - var sqlite3 = require('sqlite3').verbose(); - var db = new sqlite3.Database(dbFile); - - var query = 'SELECT * FROM Hist_Day ORDER BY id DESC;'; - db.serialize(function(){ - db.all(query, function(err, rows) { - db.close(); - if (err) { - console.log({error:err, query:query}); - res.json({status:"error", message:err, query:query}); - } else { - res.json({status:"OK", hist:rows}); - } - }); - }); -}; - -exports.wellTestAll = function(req,res){ - var sqlite3 = require('sqlite3').verbose(); - var db = new sqlite3.Database(dbFile); - - var query = 'SELECT * FROM Well_Test ORDER BY id DESC;'; - db.serialize(function(){ - db.all(query, function(err, rows) { - db.close(); - if (err) { - console.log({error:err, query:query}); - res.json({status:"error", message:err, query:query}); - } else { - res.json({status:"OK", wellTest:rows}); - } - }); - }); -}; - - - -exports.getSetup = function(req,res){ - var sqlite3 = require('sqlite3').verbose(); - var db = new sqlite3.Database(dbFile); - - var query = 'SELECT * FROM config ORDER BY dateChanged DESC LIMIT 1;'; - db.serialize(function(){ - db.all(query, function(err, rows) { - db.close(); - if (err) { - console.log({error:err, query:query}); - res.json({status:"error", message:err, query:query}); - } else { - res.json({status:"OK", setup:rows[0]}); - } - }); - }); -}; - -exports.updateSetup = function(req, res){ - var exec = require('child_process').exec; - var sqlite3 = require('sqlite3').verbose(); - var db = new sqlite3.Database(dbFile); - console.log(req.body.ip_address, req.body.device_type); - var a = { - ip_address: req.body.ip_address, - device_type: req.body.device_type - }; - db.serialize(function(){ - var query = db.prepare('INSERT INTO config (ip_address, device_type) VALUES (?, ?)'); - query.run(req.body.ip_address, req.body.device_type, function(err) { - query.finalize(); - db.close(); - if (err) { - console.log({runErr:err}); - res.json({status:"error", message:err, query:query}); - } else { - res.redirect("/#/setup"); - exec('/etc/init.d/loggers stop', function(error, stdout, stderr){ - if (error){ - console.log({status:"error", message:error, query:query}); - } - setTimeout(function(){ - exec('/etc/init.d/loggers start', function(error, stdout, stderr){ - if (error){ - console.log({status:"error", message:error, query:query}); - } - }); - },5000); - }); - } - }); - }); -}; - - - -exports.checkPythonScripts = function(req, res){ - var fs = require('fs'); - // var ps = require("ps-node"); - var running = require("is-running"); - - var alarmPID = 0; - var dataPID = 0; - var programStatus = {alarmLogger:false, dataLogger:false}; - fs.readFile('/root/alarmLogger.pid', function (aerr,adata) { - if (aerr) { - console.log("Problem getting PID of alarmLogger"); - } else { - programStatus.alarmLogger = running(adata); - } - fs.readFile('/root/dataLogger.pid', function (derr,ddata) { - if (derr) { - console.log("Problem getting PID of dataLogger"); - } else { - programStatus.dataLogger = running(ddata); - } - }); - setTimeout(function(){ - res.json({status: programStatus}); - }, 1000); - - }); -}; - -exports.restartPythonScripts = function(req, res){ - var exec = require('child_process').exec; - exec('/etc/init.d/loggers start', function(error, stdout, stderr){ - if (error){ - res.json({status:"error", message:error}); - } else { - res.json({status:"OK"}); - } - }); -}; - - -// var allowedTags = [ -// 'RC_Stop_Cmd', //Stop Command -// 'RC_Speed_Setpoint_SPM', //Speed Setpoint Value -// 'RC_Speed_Setpoint_SPM_Cmd', //Command to change speed setpoint to speed Setpoint value -// 'RC_Speed_Max', -// 'RC_Speed_Max_Cmd', -// 'RC_Speed_Min', -// 'RC_Speed_Min_Cmd', -// 'RC_Auto_Ramp_Up', -// 'RC_Auto_Ramp_Up_Cmd', -// 'RC_Auto_Ramp_Down', -// 'RC_Auto_Ramp_Down_Cmd', -// 'RC_POC_PumpOff', -// 'RC_POC_PumpOff_Cmd', -// ]; - -var tagsAllowedToWrite = [ - {name:"Stop Command", tag:"Pump.Stop", units:""}, - {name:"Speed Setpoint (SPM)", tag:"Pump.Speed_Setpoint_SPM", units:"SPM"}, - {name:"Max Speed", tag:"Pump.Speed_Max", units:"RPM"}, - {name:"Min Speed", tag:"Pump.Speed_Min", units:"RPM"}, - {name:"Speed Increase Setpoint", tag:"Pump.Auto_Percentage_RampUp", units:"%"}, - {name:"Speed Decrease Setpoint", tag:"Pump.Auto_Percentage_RampDown", units:"%"}, - {name:"Pump-Off Setpoint", tag:"Pump.POC_Percentage_Off", units:"%"}, -]; - -//var statusPageTags = tagsAllowedToWrite.push({name:"Run Status", tag:"Pump.Run_Status"}); - - -// var getStatusTagData = function(cb){ -// var tagData = []; -// -// -// -// -// -// for (var i = 0; i< tagsAllowedToWrite.length; i++){ -// readTag(tagsAllowedToWrite[i].tag, function(retObj){ -// if (retObj.status == 'success'){ -// console.log(tagsAllowedToWrite[i]); -// var newObj = {tag:tagsAllowedToWrite[i].tag, value:retObj.value, type:retObj.type, units:tagsAllowedToWrite[i].units}; -// tagData.push(newObj); -// console.log(tagData); -// if (i == (tagsAllowedToWrite.length - 1)){ -// cb(tagData); -// } -// } -// }); -// } -// }; - -//TODO FIX THIS FUNCTION -exports.statusTagData = function(req,res){ - var async = require('async'); - async.map(tagsAllowedToWrite, function(tag, tagcb){ - readTag(tag.tag, function(retObj){ - console.log(retObj); - if (retObj.status == 'success'){ - tagcb({tag:tag.tag, value:retObj.value, type:retObj.type, units:tag.units}); - } else { - tagcb({error:retObj.error}); - } - }); - },function(tagerr, tagresult){ - res.json({status:"OK", tags:tagresult}); - }); -}; - - -var readTag = function(tagName, cb){ - var exec = require('child_process').exec; - exec('python /home/poconsole/src/dataLogger/readTag.py ' + tagName, function(error, stdout, stderr){ - if (error){ - cb({error:error}); - } else{ - var readReturned = JSON.parse(stdout.replace(/'/g, '"')); - if (readReturned.status === "error"){ - cb({error:readReturned.message}); - } else if (readReturned.status === "success") { - cb(readReturned); - } - } - }); -}; - -var writeTag = function(tagName, value, godMode, cb){ - var exec = require('child_process').exec; - var allowedTags = tagsAllowedToWrite.map(function(x){ - return x.tag; - }); - var inAllowedTags = false; - if (allowedTags.indexOf(tagName) > 0){ - inAllowedTags = true; - } - if (inAllowedTags || godMode){ - exec('python /home/poconsole/src/dataLogger/writeTag.py ' + tagName + " " + value, function(error, stdout, stderr){ - if (error){ - cb({error:error}); - } else { - var readReturned = JSON.parse(stdout.replace(/'/g, '"')); - if (readReturned.status === "error"){ - cb({error:readReturned.message}); - } else if (readReturned.status === "success") { - cb(readReturned); - } - } - }); - } else { - cb({error:"Not in allowed tags"}); - } -}; - - - -exports.setTagValue = function(req, res){ - - var tagName = req.params.tagName; - var value = req.params.value; - var godMode = (req.params.mode == "I_AM_PATRICK"); - - writeTag(tagName, value, godMode, function(newValue){ - res.json(newValue); - }); -}; - -exports.getTagValue = function(req, res){ - readTag(req.params.tagName, function(retObj){ - res.json(retObj); - }); -}; - -exports.getWellBackups = function(req, res){ - var fs = require('fs'); - var backupDir = fileLocation; - fs.readdir(backupDir, function (err, files) { - if (err){ - res.json({status:"error", message:err}); - } else { - var backups = files.filter( function(x){ - return x.slice(0,6) == "backup"; - }).map(function(y){ - return y.split(".")[0]; - }).sort().reverse(); - res.json({status:"OK", backups:backups}); - } - }); -}; - -exports.parseWellBackup = function(req, res){ - var fs = require('fs'); - var csv = require('ya-csv'); - var path = require('path'); - - var backup = {}; - backup.unitConfig = {}; - backup.unitConfig.motorNameplate = {}; - backup.taper = []; - for (var i = 0; i<11; i ++){ - backup.taper.push({setup:{}}); - } - - var backupDir = fileLocation; - var reader = new csv.createCsvFileReader(path.join(backupDir,req.params.file) + ".csv", { - 'separator': ',', - 'quote': '"', - 'escape': '"', - 'comment': '', - }); - var writer = new csv.CsvWriter(process.stdout); - reader.addListener('data', function(data) { - var splitTagName = data[0].split("."); - if (splitTagName[0] == "UnitConfig"){ - if (splitTagName[1] == "MotorNameplate"){ - backup.unitConfig.motorNameplate[splitTagName[2]] = data[1]; - } else { - backup.unitConfig[splitTagName[1]] = data[1]; - } - } else if (splitTagName[0] == "Taper"){ - var re = /Taper\[(\d*)\]/; - var taperNum = parseInt(re.exec(splitTagName[1])[1]); - backup.taper[taperNum].setup[splitTagName[3]] = data[1]; - } else { - if (splitTagName[0] != "TAPER"){ - backup[data[0]] = data[1]; - } - } - }); - reader.on("end", function(){ - res.json({status:"OK", backupData:backup}); - }); - -}; - -exports.updateFiles = function(req, res){ - var exec = require('child_process').exec; - var scr = ""; - if (req.params.force == "FORCE"){ - scr = 'python /home/poconsole/checkCurrentVersion.py True'; - } else { - scr = 'python /home/poconsole/checkCurrentVersion.py'; - } - exec(scr, function(error, stdout, stderr){ - if (error){ - res.json({error:error}); - } else { - var readReturned = JSON.parse(stdout.replace(/'/g, '"')); - if (readReturned.status === "error"){ - res.json({status:'error', message:readReturned.message}); - } else if (readReturned.status === "success") { - readReturned.status ="OK"; - res.json(readReturned); - } - } - }); -}; - - - - -exports.getCurrentTotals = function(req, res){ - var exec = require('child_process').exec; - var script = 'python /home/poconsole/getTodaysTotals.py'; - exec(script, function(error, stdout, stderr){ - if (error) { - res.json({status:'error', message:error}); - } else { - console.log({stdout:stdout}); - res.json({status:"OK", totals:JSON.parse(stdout.replace(/'/g, '"'))}); - } - }); -}; - - -/*-- NOTES --*/ -exports.getNotes = function(req,res){ - var sqlite3 = require('sqlite3').verbose(); - var db = new sqlite3.Database(dbFile); - - var query = "SELECT notes.id as id, notes.author as author, notes.note as note, types.type as ntype, notes.type as ntypeval, notes.associated_stroke as stroke, notes.datetime as date_time FROM Notes notes LEFT JOIN note_types types ON notes.type = types.id WHERE notes.deleted=0;"; - db.serialize(function(){ - db.all(query, function(err, rows) { - db.close(); - if (err) { - console.log({error:err, query:query}); - res.json({status:"error", message:err, query:query}); - } else { - res.json({status:"OK", notes:rows.reverse()}); - } - }); - }); -}; - -exports.postNote = function(req, res){ - var sqlite3 = require('sqlite3').verbose(); - var db = new sqlite3.Database(dbFile); - - var post = { - author: req.body.author, - note: req.body.note, - type: req.body.type, - associated_stroke: req.body.stroke_associated - }; - var query = db.prepare("INSERT INTO Notes (author, note, type, associated_stroke) VALUES (?, ?, ?, ?)"); - db.serialize(function(){ - query.run(req.body.author, req.body.note, req.body.type, req.body.associated_stroke, function(err) { - query.finalize(); - db.close(); - if (err) { - console.log({error:err, query:query}); - res.json({status:"error", message:err, query:query}); - } else { - res.json({status:"OK"}); - } - }); - }); -}; - -exports.getNoteTypes =function(req, res){ - var sqlite3 = require('sqlite3').verbose(); - var db = new sqlite3.Database(dbFile); - - var query = "SELECT * FROM note_types WHERE deleted=0;"; - db.serialize(function(){ - db.all(query, function(err, rows) { - db.close(); - if (err) { - console.log({error:err, query:query}); - res.json({error:err, query:query}); - } else { - res.json({status:"OK", types:rows}); - } - }); - }); -}; - -exports.updateNote = function(req, res){ - var sqlite3 = require('sqlite3').verbose(); - var db = new sqlite3.Database(dbFile); - - var id = parseInt(req.body.id); - - db.serialize(function(){ - var query = db.prepare("UPDATE Notes SET note = ?, author= ?, type = ? , associated_stroke = ? WHERE id = ?"); - query.run(req.body.note, req.body.author, req.body.type, req.body.stroke_associated, id, function(err) { - query.finalize(); - db.close(); - if (err) { - console.log({error:err, query:query}); - res.json({status:"error", message:err, query:query}); - } else { - res.json({status:"OK"}); - } - }); - }); -}; - -exports.deleteNote = function(req, res){ - var sqlite3 = require('sqlite3').verbose(); - var db = new sqlite3.Database(dbFile); - - var id = parseInt(req.body.id); - db.serialize(function(){ - var query = db.prepare("UPDATE Notes SET deleted=1 WHERE id = ?"); - query.run(id, function(err) { - query.finalize(); - db.close(); - if (err) { - console.log({error:err, query:query}); - res.json({status:"error", message:err, query:query}); - } else { - res.json({status:"OK"}); - } - }); - }); -}; - -exports.undeleteNote = function(req, res){ - var sqlite3 = require('sqlite3').verbose(); - var db = new sqlite3.Database(dbFile); - - var id = parseInt(req.body.id); - db.serialize(function(){ - var query = db.prepare('UPDATE Notes SET deleted=0 WHERE id = ?'); - query.run(id, function(err) { - db.finalize(); - db.close(); - if (err) { - console.log({error:err, query:query}); - res.json({status:"error", message:err, query:query}); - } else { - res.json({status:"OK"}); - } - }); - }); -}; - -exports.getDeletedNotes = function(req,res){ - var sqlite3 = require('sqlite3').verbose(); - var db = new sqlite3.Database(dbFile); - - var query = "SELECT notes.id as id, notes.author as author, notes.note as note, types.type as ntype, notes.type as ntypeval, notes.associated_stroke as stroke, notes.datetime as date_time FROM Notes notes LEFT JOIN note_types types ON notes.type = types.id WHERE notes.deleted=1;"; - db.serialize(function(){ - db.all(query, function(err, rows) { - db.close(); - if (err) { - console.log({error:err, query:query}); - res.json({status:'error', message:err, query:query}); - } else { - res.json({status:"OK", notes:rows.reverse()}); - } - }); - }); -}; - - - -/*-- FLUID LEVEL SHOT --*/ -/* -CREATE TABLE `WellData`.`fluid_shot` ( - `id` int(11) NOT NULL AUTO_INCREMENT, - `shot_datetime` datetime DEFAULT NULL, - `pump_intake_pressure` float DEFAULT NULL, - `fluid_gradient` float DEFAULT NULL, - `friction` float DEFAULT NULL, - `taken_by` varchar(128) DEFAULT NULL, - `deleted` int(11) DEFAULT 0, - PRIMARY KEY (`id`) -) -*/ - -exports.getFluidShots = function(req,res){ - var sqlite3 = require('sqlite3').verbose(); - var db = new sqlite3.Database(dbFile); - - var query = "SELECT * FROM fluid_shot WHERE deleted=0;"; - db.serialize(function(){ - db.all(query, function(err, rows, fields) { - db.close(); - if (err) { - console.log({error:err, query:query}); - res.json({status:'error', message:err, query:query}); - } else { - res.json({status:"OK", fluid_shots: rows.reverse()}); - } - }); - }); -}; - -exports.postFluidShot = function(req, res){ - var sqlite3 = require('sqlite3').verbose(); - var db = new sqlite3.Database(dbFile); - - var p = { - shot_datetime: req.body.shot_datetime, - pump_intake_pressure: req.body.pump_intake_pressure, - fluid_gradient: req.body.fluid_gradient, - friction: req.body.friction, - taken_by: req.body.taken_by - }; - db.serialize(function(){ - var query = db.prepare("INSERT INTO fluid_shot (shot_datetime, pump_intake_pressure, fluid_gradient, friction, taken_by) VALUES (?, ?, ?, ?, ?)"); - query.run(p.shot_datetime, p.pump_intake_pressure, p.fluid_gradient, p.friction, p.taken_by, function(err) { - query.finalize(); - db.close(); - if (err) { - console.log(err); - res.json({status:"error", message:err}); - } else { - res.json({status:"OK"}); - } - }); - }); -}; - -exports.updateFluidShot = function(req, res){ - var sqlite3 = require('sqlite3').verbose(); - var db = new sqlite3.Database(dbFile); - - var id = parseInt(req.body.id); - db.serialize(function(){ - var query = db.prepare("UPDATE fluid_shot SET shot_datetime = ?, pump_intake_pressure= ?, fluid_gradient = ? , friction = ?, taken_by = ? WHERE id = ?"); - query.run(req.body.shot_datetime, req.body.pump_intake_pressure, req.body.fluid_gradient, req.body.friction, req.body.taken_by, id, function(err) { - query.finalize(); - db.close(); - if (err) { - console.log(err); - res.json({status:"error", message:err}); - } else { - res.json({status:"OK"}); - } - }); - }); -}; - -exports.deleteFluidShot = function(req, res){ - var sqlite3 = require('sqlite3').verbose(); - var db = new sqlite3.Database(dbFile); - - var id = parseInt(req.body.id); - db.serialize(function(){ - var query = db.prepare("UPDATE fluid_shot SET deleted=1 WHERE id = ?"); - query.run(id, function(err) { - query.finalize(); - db.close(); - if (err) { - console.log(err); - res.json({status:"error", message:err}); - } else { - res.json({status:"OK"}); - } - }); - }); -}; - -exports.undeleteFluidShot = function(req, res){ - var sqlite3 = require('sqlite3').verbose(); - var db = new sqlite3.Database(dbFile); - - var id = parseInt(req.body.id); - db.serialize(function(){ - var query = db.prepare("UPDATE fluid_shot SET deleted=0 WHERE id = ?"); - query.run(id, function(err) { - query.finalize(); - db.close(); - if (err) { - console.log(err); - res.json({status:"error", message:err}); - } else { - res.json({status:"OK"}); - } - }); - }); -}; - -exports.getDeletedFluidShots = function(req,res){ - var sqlite3 = require('sqlite3').verbose(); - var db = new sqlite3.Database(dbFile); - - var query = "SELECT * FROM fluid_shot WHERE deleted=1;"; - db.serialize(function(){ - db.all(query, function(err, rows) { - db.close(); - if (err) { - console.log(err); - res.json({status:"error", message:err}); - } else { - res.json({status:"OK", fluid_shots:rows.reverse()}); - } - - }); - }); -}; - -/*-- WELL TESTS --*/ -/* -CREATE TABLE `Well_Test` ( - `id` int(11) NOT NULL AUTO_INCREMENT, - `test_date` datetime DEFAULT NULL, - `test_volume_oil` float DEFAULT NULL, - `test_volume_water` float DEFAULT NULL, - `test_volume_gas` float DEFAULT NULL, - `k_factor` float DEFAULT NULL, - `projected_volume_oil` float DEFAULT NULL, - `projected_volume_water` float DEFAULT NULL, - `api_gravity_oil` float DEFAULT NULL, - `sg_oil` float DEFAULT NULL, - `sg_water` float DEFAULT NULL, - `test_hours` int(11) DEFAULT NULL, - PRIMARY KEY (`id`) -); -*/ - -exports.getWellTests = function(req,res){ - var sqlite3 = require('sqlite3').verbose(); - var db = new sqlite3.Database(dbFile); - - var query = "SELECT * FROM Well_Test WHERE deleted=0;"; - db.serialize(function(){ - db.all(query, function(err, rows, fields) { - db.close(); - if (err) { - console.log(err); - res.json({status:"error", message:err}); - } else { - res.json({status:"OK", well_tests: rows.reverse()}); - } - }); - }); -}; - -exports.postWellTest = function(req, res){ - var sqlite3 = require('sqlite3').verbose(); - var db = new sqlite3.Database(dbFile); - - var p = { - test_date: req.body.test_date, - test_volume_oil: req.body.test_volume_oil, - test_volume_water: req.body.test_volume_water, - test_volume_gas: req.body.test_volume_gas, - api_gravity_oil: req.body.api_gravity_oil, - sg_oil:req.body.sg_oil, - sg_water: req.body.sg_water, - test_hours: req.body.test_hours - }; - db.serialize(function(){ - var query = db.prepare("INSERT INTO Well_Test SET (test_date, test_volume_oil, test_volume_water, test_volume_gas, api_gravity_oil, sg_oil, sg_water, test_hours) VALUES (?, ?, ?, ?, ?, ?, ?, ?)"); - query.run(p.test_date, p.test_volume_oil, p.test_volume_water, p.test_volume_gas, p.api_gravity_oil, p.sg_oil, p.sg_water, p.test_hours, function(err) { - query.finalize(); - db.close(); - if (err) { - console.log(err); - res.json({status:"error", message:err}); - } else { - res.json({status:"OK"}); - } - }); - }); -}; - -exports.updateWellTest = function(req, res){ - var sqlite3 = require('sqlite3').verbose(); - var db = new sqlite3.Database(dbFile); - - var id = parseInt(req.body.id); - db.serialize(function(){ - var query = db.prepare("UPDATE Well_Test SET test_date = ?, test_volume_oil= ?, test_volume_water = ? , test_volume_gas = ?, api_gravity_oil = ?, sg_oil = ?, sg_water = ?, test_hours = ?, WHERE id = ?"); - query.run(req.body.test_date, req.body.test_volume_oil, req.body.test_volume_Water, req.body.test_volume_gas, req.body.api_gravity_oil, req.body.sg_oil, req.body.sg_water, req.body.test_hours, id, function(err, rows, fields) { - query.finalize(); - db.close(); - if (err) { - res.json({status:"error", message:err}); - console.log(err); - } else { - res.json({status:"OK"}); - } - }); - }); -}; - -exports.deleteWellTest = function(req, res){ - var sqlite3 = require('sqlite3').verbose(); - var db = new sqlite3.Database(dbFile); - - var id = parseInt(req.body.id); - db.serialize(function(){ - var query = db.prepare("UPDATE Well_Test SET deleted=1 WHERE id = ?"); - query.run(id, function(err) { - query.finalize(); - db.close(); - if (err) { - console.log(err); - res.json({status:"error", message:err}); - } else { - res.json({status:"OK"}); - } - }); - }); -}; - -exports.undeleteWellTest = function(req, res){ - var sqlite3 = require('sqlite3').verbose(); - var db = new sqlite3.Database(dbFile); - - var id = parseInt(req.body.id); - db.serialize(function(){ - var query = db.prepare("UPDATE Well_Test SET deleted=0 WHERE id = ?"); - query.run(id, function(err) { - query.finalize(); - db.close(); - if (err) { - console.log(err); - res.json({status:"error", message:err}); - } else { - res.json({status:"OK"}); - } - }); - }); -}; - -exports.getDeletedWellTests = function(req,res){ - var sqlite3 = require('sqlite3').verbose(); - var db = new sqlite3.Database(dbFile); - - var query = "SELECT * FROM Well_Test WHERE deleted=1;"; - db.serialize(function(){ - db.all(query, function(err, rows) { - db.close(); - if (err) { - console.log(err); - res.json({status:"error", message:err}); - } else { - res.json({status:"OK", well_tests:rows.reverse()}); - } - }); - }); -}; - -exports.getTagValues = function(req, res){ - var sqlite3 = require('sqlite3').verbose(); - var db = new sqlite3.Database(dbFile); - - db.serialize(function(){ - var query = "SELECT name, dtime, val FROM tag_vals GROUP BY name"; - var prepQuery = db.prepare(query); - prepQuery.all(req.params.id, function(err, rows) { - prepQuery.finalize(); - db.close(); - if (err) { - res.json({status:"error", message:err}); - console.log(err); - } else { - res.json({status:"OK", vals:rows}); - } - }); - }); -};