From cb545acfc6d47a823e652450184a3a37edc83bcb Mon Sep 17 00:00:00 2001 From: IsolatedSushi <simen.vanherpt@gmail.com> Date: Sun, 1 Nov 2020 23:36:50 +0100 Subject: [PATCH] WIP database work --- backend/config.js | 45 ----------------- backend/database/config.js | 50 +++++++++++++++++++ backend/{ => gatewayserver}/package-lock.json | 0 backend/{ => gatewayserver}/package.json | 0 backend/{ => gatewayserver}/server(OLD).js | 0 backend/{ => gatewayserver}/server.js | 29 +++++++---- .../app/index.js | 28 +++++++++-- 7 files changed, 94 insertions(+), 58 deletions(-) delete mode 100644 backend/config.js create mode 100644 backend/database/config.js rename backend/{ => gatewayserver}/package-lock.json (100%) rename backend/{ => gatewayserver}/package.json (100%) rename backend/{ => gatewayserver}/server(OLD).js (100%) rename backend/{ => gatewayserver}/server.js (71%) diff --git a/backend/config.js b/backend/config.js deleted file mode 100644 index 3ee914c..0000000 --- a/backend/config.js +++ /dev/null @@ -1,45 +0,0 @@ - -var Connection = require('tedious').Connection -var Request = require('tedious').Request - -var config = { - server: 'DESKTOP-BP4I6KI', - database: 'SAMPLE', - options: { - trustServerCertificate: true - }, - authentication: { - type: 'default', - options: { - userName: 'test', //update me - password: 'test' //update me - } -}, -} - -var connection = new Connection(config) - -connection.on('connect', function (err) { - if (err) { - console.log(err) - } else { - executeStatement() - } -}) - -function executeStatement () { - request = new Request("SELECT * FROM SAMPLE.dbo.pointTable", function (err, rowCount) { - if (err) { - console.log(err) - } else { - console.log(rowCount + ' rows') - } - connection.close() - }) - - request.on('row', function (columns) { - console.log(columns); - }) - - connection.execSql(request) -} \ No newline at end of file diff --git a/backend/database/config.js b/backend/database/config.js new file mode 100644 index 0000000..e3e1dcc --- /dev/null +++ b/backend/database/config.js @@ -0,0 +1,50 @@ + +var Connection = require('tedious').Connection +var Request = require('tedious').Request + +const config = { + server: 'DESKTOP-BP4I6KI', + database: 'SAMPLE', + options: { + trustServerCertificate: true + }, + authentication: { + type: 'default', + options: { + userName: 'test', //update me + password: 'test' //update me + } +}, +} + +function executeLocalQuery(query,connection){ + request = new Request(query, function (err, rowCount) { + if (err) { + console.log("ERROR: " + err); + return "ERROR: " + err; + } + connection.close() + }) + + request.on('row', function (columns) { + return columns; + }) + + connection.execSql(request) +} + +module.exports = { + executeQuery: async function(query){ + + var connection = new Connection(config) + connection.on('connect', function (err) { + if (err) { + console.log("ERROR: " + err); + return "ERROR: " + err; + } else { + var result = await executeLocalQuery(query,connection); + return result + } + }) + } +}; diff --git a/backend/package-lock.json b/backend/gatewayserver/package-lock.json similarity index 100% rename from backend/package-lock.json rename to backend/gatewayserver/package-lock.json diff --git a/backend/package.json b/backend/gatewayserver/package.json similarity index 100% rename from backend/package.json rename to backend/gatewayserver/package.json diff --git a/backend/server(OLD).js b/backend/gatewayserver/server(OLD).js similarity index 100% rename from backend/server(OLD).js rename to backend/gatewayserver/server(OLD).js diff --git a/backend/server.js b/backend/gatewayserver/server.js similarity index 71% rename from backend/server.js rename to backend/gatewayserver/server.js index ca9d358..3137d60 100644 --- a/backend/server.js +++ b/backend/gatewayserver/server.js @@ -1,5 +1,5 @@ //SETUP -var PROTO_PATH = __dirname + '../../../protos/v3/projector.proto'; +var PROTO_PATH = __dirname + '../../../../protos/v3/projector.proto'; var assert = require('assert'); var async = require('async'); const axios = require('axios'); @@ -7,6 +7,9 @@ var _ = require('lodash'); var grpc = require('@grpc/grpc-js'); var protoLoader = require('@grpc/proto-loader'); const http = require("http"); + +var database=require('../database/config'); +const { callErrorFromStatus } = require('@grpc/grpc-js/build/src/call'); //let connection = mysql.createConnection(config); var packageDefinition = protoLoader.loadSync( @@ -27,25 +30,32 @@ function sendPoint(call, callback) { }) } +//Create the query and execute it function addToDB(call){ - return - let sql = `INSERT INTO SAMPLE.dbo.pointTable - VALUES (2,2)`; + data = call.request.rows; + var query = 'INSERT INTO SAMPLE.dbo.pointTable (x,y) \n VALUES \n' - // execute the insert statment - connection.query(sql); + for(var i = 0; i < data.length-1; i++){ + hdvector = data[i].hdvector; + query += `(${hdvector[1]}, ${hdvector[2]}),\n` + } + query += `(${data[data.length-1].hdvector[1]}, ${data[data.length-1].hdvector[2]});` + database.executeQuery(query); } //Route the grpc function to the microservice function sendPointStream(call) { + var modelID = "undefined"; if(call.request.modelid){ //Non-empty training set addToDB(call); + modelID = call.request.modelid; } - console.log(call.request.modelid) - console.log(call.request.rows) - http.get("http://localhost:8090/generatePointStream", res =>{ + + var requestURL = "http://localhost:8090/generatePointStream?modelID=${modelID}" + modelID; + + http.get(requestURL, res =>{ res.on("data", data =>{ sendDataStream(data,call) @@ -67,7 +77,6 @@ function sendDataStream(data,call){ } } - //Create server and route the grpc functions to js functions function getServer() { diff --git a/backend/microservices and load balancing/app/index.js b/backend/microservices and load balancing/app/index.js index 0c4fa40..57c0830 100644 --- a/backend/microservices and load balancing/app/index.js +++ b/backend/microservices and load balancing/app/index.js @@ -1,5 +1,6 @@ const app = require("express")(); const http = require('http'); +var database=require('../../database/config'); //Default at 8090 to enable easy development const appid = process.env.APPID || 8090; @@ -13,7 +14,29 @@ app.get("/generatePoint", (req,res) => { //Sends the stream Had to limit the speed with intervals // Otherwise it sends 2.000.000+ points a sec app.get("/generatePointStream",(req,res)=>{ - console.log("Generating points") + + let modelID = req.query.modelID; + console.log(modelID); + if(modelID == "undefined"){ + streamGeneratedPoints(res); + } + else{ + streamDatabasePoints(res) + } +}) + +function streamDatabasePoints(res){ + console.log("Sending database points") + var result = database.executeQuery("SELECT * from SAMPLE.dbo.pointTable"); + + console.log(result); +} + + +function streamGeneratedPoints(res){ + + + console.log("Sending generated points"); var intervalId = setInterval(function(){ for(var i = 0; i<100;i++){ @@ -27,8 +50,7 @@ app.get("/generatePointStream",(req,res)=>{ }, 10000); },10); - -}) +} //Generate randomPoint -- GitLab