Advertisement
Guest User

Untitled

a guest
Jan 9th, 2017
86
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 10.07 KB | None | 0 0
  1. //Start HTTP-Server
  2. var express = require("express");
  3. var url = require("url");
  4. var http = require("http");
  5. var fs = require("fs");
  6. var connection = require('./db');
  7.  
  8. var port = 3000;
  9. var app = express();
  10. app.use(express.static(__dirname + "/client"));
  11. http.createServer(app).listen(port);
  12.  
  13. //Variables
  14. var user ={};
  15. var Id = null;
  16. var todos =[];
  17. var indexofuser=-1;
  18.  
  19. //clients requests todos
  20. app.get("/todo", function (req, res) {
  21.  
  22. var IdToGet = req.query.userId;
  23.  
  24. connection.query('SELECT * FROM ToDoItem WHERE ToDoListID IN (SELECT Id FROM ToDoList WHERE Owner ='+IdToGet+');', function(err, rows){
  25. if(!err){
  26. res.end(JSON.stringify(rows, null,4));
  27. }
  28. else {
  29. console.log('Error while performing Query');
  30. }
  31. });
  32.  
  33.  
  34. });
  35.  
  36.  
  37. //clients requests todoListID
  38. app.get("/todoListID", function (req, res,next) {
  39.  
  40. var IdToGet = parseInt(req.query.userId);
  41. //console.log(IdToGet);
  42. connection.query('SELECT Id FROM ToDoList WHERE Owner = '+ IdToGet+' LIMIT 1;', function(err, rows){
  43. if(!err){
  44. //console.log(JSON.stringify(rows).match( /\d+/)[0]);
  45. res.end(JSON.stringify(rows).match( /\d+/)[0]);
  46.  
  47.  
  48. }
  49. else {
  50. console.log(err);
  51. }
  52. });
  53.  
  54.  
  55. });
  56.  
  57. //clients want to register
  58. app.get("/register", function (req, res,next) {
  59. var newusername = req.query.registerinfo.split(" ")[0];
  60. var newpassword = req.query.registerinfo.split(" ")[1];
  61. var userid = null;
  62. connection.query('SELECT MAX(Id) FROM User;',function(err, rows){
  63. rows = JSON.stringify(rows);
  64. userid = parseInt(rows.replace( /^\D+/g, '')) +1;
  65. connection.query('INSERT INTO User (Id, Name, Email, Username, Password) VALUES ('+userid+',"'+newusername+'",NULL,"'+newusername+'","'+newpassword +'");',function(err, rows){
  66. if(!err)
  67. {
  68. res.end(JSON.stringify(userid));
  69. }
  70. else
  71. {
  72. res.end("false")
  73. console.log(err);
  74. }
  75. });
  76. });
  77.  
  78. connection.query('SELECT MAX(Id) FROM ToDoList;',function(err, rows){
  79. rows = JSON.stringify(rows);
  80. var todolistid = parseInt(rows.replace( /^\D+/g, '')) +1;
  81. connection.query('INSERT INTO ToDoList (Id, Name, CreationDate,Owner, IsPublic) VALUES ('+todolistid+',"MAIN",NULL,"'+userid+'",0);',function(err, rows){
  82. if(err)
  83. { res.end("false")
  84. console.log(err);
  85. }
  86. });
  87. });
  88.  
  89.  
  90.  
  91. });
  92.  
  93. //clients want to access
  94. app.get("/access", function (req, res,next) {
  95. console.log(">>>>>"+req.query.loginfoin+"<<<<<");
  96. var username = req.query.loginfoin.split(" ")[0];
  97. var password = req.query.loginfoin.split(" ")[1];
  98. connection.query('select * from User where Username = "'+ username+'";', function(err, rows){
  99. if(!err)
  100. {
  101. var User = JSON.parse(JSON.stringify(rows, null,4))[0];
  102.  
  103. if(User === undefined )
  104. {
  105. res.end("false");
  106. return;
  107. }
  108. if(User.Password === password)
  109. {
  110. res.end(JSON.stringify(User.Id));
  111. }
  112.  
  113. else
  114. {
  115. res.end("false");
  116. }
  117. }
  118. else
  119. {
  120. console.log(err);
  121. }
  122. });
  123.  
  124.  
  125.  
  126. });
  127.  
  128.  
  129. //date formatter
  130. function toServerDate(dateIn)
  131. {
  132. if(dateIn == "")
  133. {
  134. return null;
  135. }
  136. var date = dateIn.split("/");
  137. var serverDate = date[2] + date[0] + date[1]+ "000000";
  138. return serverDate;
  139. }
  140.  
  141. //add todo to the server
  142. app.get("/addtodo", function (req, res) {
  143. console.log(req.query);
  144. //console.log(toServerDate(req.query.deadline));
  145. connection.query('INSERT INTO ToDoItem (Id,Title,Text,CreationDate,DueDate,Completed,CompletionDate,Priority,ToDoListID,ParentToDo) VALUES ('+req.query.id+',"'+req.query.todo+'","Text",NULL,'+toServerDate(req.query.deadline)+','+req.query.finished+',NULL,'+req.query.priority+','+req.query.ToDoListID+',NULL);',function(err, rows){
  146. if(err)
  147. {
  148. console.log(err);
  149. }
  150. });
  151.  
  152. });
  153.  
  154. //remove todo from the server
  155. app.get("/removetodo", function (req, res) {
  156. var idToRemove = parseInt(req.query.idvalue);
  157.  
  158. connection.query('DELETE FROM ToDoItem WHERE Id= '+idToRemove +';',function(err, rows){
  159. if(err)
  160. {
  161. console.log(err);
  162. }
  163. });
  164. });
  165.  
  166.  
  167. //edit todo from the server
  168. app.get("/edittodo", function (req, res) {
  169.  
  170. connection.query('UPDATE ToDoItem SET Title= "'+req.query.todo +'", DueDate= NULL, Completed ='+ parseInt(req.query.finished)+', Priority ='+ parseInt(req.query.priority)+' WHERE Id ='+ parseInt(req.query.id) +';',function(err, rows){
  171. if(err)
  172. {
  173. console.log(err);
  174. }
  175. });
  176. });
  177.  
  178. //function to write to json file. might not needed later as we use sql
  179. function writeToFile()
  180. {
  181. user.todolist=todos;
  182. database[indexofuser] = user;
  183. var json = JSON.stringify(database, null, 4);
  184. fs.writeFile('database.json', json, 'utf8', function(err) {});
  185. }
  186.  
  187.  
  188.  
  189. //______________________DASHBOARD_________________________
  190. //Query 1
  191. app.get("/dashboard/query1", function (req, res) {
  192. var querynmbr = 1;
  193. var query = 'SELECT ToDoList.Name FROM ToDoList WHERE ToDoList.Owner = "1";';
  194. executeQuery(querynmbr, query, function(response){
  195. res.json(response);
  196. });
  197. });
  198.  
  199. //Query 2
  200. app.get("/dashboard/query2", function (req, res) {
  201. var querynmbr = 2;
  202. var query = 'SELECT Title FROM ToDoItem WHERE ToDoListID = "1";';
  203. executeQuery(querynmbr, query, function(response){
  204. res.json(response);
  205. });
  206. });
  207.  
  208. //Query 3
  209. app.get("/dashboard/query3", function (req, res) {
  210. var querynmbr = 3;
  211. var query = 'SELECT Title FROM ToDoItem WHERE ToDoListID = "1" LIMIT 5,5;';
  212. executeQuery(querynmbr, query, function(response){
  213. res.json(response);
  214. });
  215. });
  216.  
  217. //Query 4
  218. app.get("/dashboard/query4", function (req, res) {
  219. var querynmbr = 4;
  220. var query = 'SELECT Title FROM ToDoItem WHERE ToDoListID = "1" AND Completed="0" AND Priority="3" AND CreationDate BETWEEN "2014-10-24 00:00:01" AND "2014-12-05 23:59:59" LIMIT 0,5;';
  221. executeQuery(querynmbr, query, function(response){
  222. res.json(response);
  223. });
  224. });
  225.  
  226. //Query 5
  227. app.get("/dashboard/query5", function (req, res) {
  228. var querynmbr = 5;
  229. var query = 'SELECT Title FROM ToDoItem WHERE ParentToDo = "1";';
  230. executeQuery(querynmbr, query, function(response){
  231. res.json(response);
  232. });
  233. });
  234.  
  235. //Query 6
  236. app.get("/dashboard/query6", function (req, res) {
  237. var querynmbr = 6;
  238. var query = 'SELECT Tag.Text FROM Tag, ItemTag WHERE Tag.Id = ItemTag.TagId AND ItemTag.ToDoId="1";';
  239. executeQuery(querynmbr, query, function(response){
  240. res.json(response);
  241. });
  242. });
  243.  
  244. //Query 7
  245. app.get("/dashboard/query7", function (req, res) {
  246. var querynmbr = 7;
  247. var query = 'SELECT ToDoList.Name FROM ItemTag, ToDoItem, ToDoList WHERE ItemTag.ToDoId = ToDoItem.Id AND ToDoItem.ToDoListID = ToDoList.Id AND ItemTag.TagId="1" GROUP BY Name;';
  248. executeQuery(querynmbr, query, function(response){
  249. res.json(response);
  250. });
  251. });
  252.  
  253. //Query 8
  254. app.get("/dashboard/query8", function (req, res) {
  255. var querynmbr = 8;
  256. var query = 'SELECT ToDoItem.Completed, COUNT(*) AS "Amount" FROM ItemTag, ToDoItem WHERE ItemTag.ToDoId = ToDoItem.Id AND ItemTag.TagId="1" GROUP BY Completed;';
  257. executeQuery(querynmbr, query, function(response){
  258. res.json(response);
  259. });
  260. });
  261.  
  262. //Query 9
  263. app.get("/dashboard/query9", function (req, res) {
  264. var querynmbr = 9;
  265. var query = 'SELECT WEEK (ToDoItem.CompletionDate) AS Week, COUNT(*) AS Count FROM ToDoItem WHERE CompletionDate IS NOT NULL GROUP BY WEEK(CompletionDate);';
  266. executeQuery(querynmbr, query, function(response){
  267. res.json(response);
  268. });
  269. });
  270.  
  271. //Query 10
  272. app.get("/dashboard/query10", function (req, res) {
  273. var querynmbr = 10;
  274. var query = 'SELECT ToDoItem.Title, DATEDIFF(ToDoItem.CompletionDate, ToDoItem.CreationDate) AS Difference FROM ToDoItem, ItemTag WHERE ToDoItem.id = ItemTag.ToDoId AND ItemTag.TagId = "1" AND ToDoItem.CompletionDate IS NOT NULL ORDER BY DATEDIFF(ToDoItem.CompletionDate, ToDoItem.CreationDate) LIMIT 0,10;';
  275. executeQuery(querynmbr, query, function(response){
  276. res.json(response);
  277. });
  278. });
  279.  
  280. //Query 11
  281. app.get("/dashboard/query11", function (req, res) {
  282. var querynmbr = 11;
  283. var query = 'SELECT SumOfTagID, COUNT(*) AS Amount FROM (SELECT SUM(TagId) AS SumOfTagID FROM ItemTag GROUP BY ToDoId) AS Subset GROUP BY SumOfTagID;';
  284. executeQuery(querynmbr, query, function(response){
  285. res.json(response);
  286. });
  287. });
  288.  
  289. //Query 12
  290. app.get("/dashboard/query12", function (req, res) {
  291. var querynmbr = 12;
  292. var query = 'SELECT AVG(Difference) AS AverageDays FROM (SELECT ToDoItem.Title, DATEDIFF(ToDoItem.CompletionDate, ToDoItem.CreationDate) AS Difference FROM ToDoItem WHERE ToDoItem.ToDoListID="1" AND DATEDIFF(ToDoItem.CompletionDate, ToDoItem.CreationDate) > -1 AND ToDoItem.CompletionDate IS NOT NULL) AS subset;';
  293. executeQuery(querynmbr, query, function(response){
  294. res.json(response);
  295. });
  296. });
  297.  
  298. //Query 13
  299. app.get("/dashboard/query13", function (req, res) {
  300. var querynmbr = 13;
  301. var query = 'SELECT ToDoItem.Title FROM (SELECT AVG(Subset.Difference) AS AverageDays FROM (SELECT ToDoItem.Title, DATEDIFF(ToDoItem.CompletionDate, ToDoItem.CreationDate) AS Difference FROM ToDoItem WHERE ToDoItem.ToDoListID="1" AND DATEDIFF(ToDoItem.CompletionDate, ToDoItem.CreationDate) > -1 AND ToDoItem.CompletionDate IS NOT NULL )AS Subset)AS Subset2, ToDoItem WHERE DATEDIFF(ToDoItem.CompletionDate, ToDoItem.CreationDate) > Subset2.AverageDays AND ToDoItem.CompletionDate IS NOT NULL AND ToDoItem.ToDoListID="1";';
  302. executeQuery(querynmbr, query, function(response){
  303. res.json(response);
  304. });
  305. });
  306.  
  307. //CustomQuery
  308. app.get("/dashboard/customquery", function (req, res) {
  309. var querynmbr = "CustomQuery";
  310. var query = req.query.customquery;
  311. executeQuery(querynmbr, query, function(response){
  312. res.json(response);
  313. });
  314. });
  315.  
  316. //Function to execute the database query!
  317. function executeQuery(querynmbr, query, callback){
  318. console.log('Query ' + querynmbr+ ' initiated!')
  319. var response = {};
  320. try{
  321. connection.query(query, function(err, rows, fields) {
  322. if (!err) {
  323. console.log("- Query " + querynmbr + " executed correctly!");
  324. callback(rows);
  325. }
  326. else {
  327. response = {response: "Query Failure!"};
  328. console.log("- Query Failure!")
  329. callback(response);
  330. }
  331. });
  332. }
  333. catch(err) {
  334. response = {response: "MySQL-Server Connection Failure"};
  335. console.log("- MySQL-Server Connection Failure!")
  336. callback(response);
  337. }
  338. };
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement