Advertisement
Guest User

Untitled

a guest
Sep 29th, 2016
181
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. 'use strict';
  2.  
  3. const express = require('express');
  4. const formidable = require('formidable');
  5. const router = express.Router(); //handles the routing of incoming requests
  6. const pg = require('pg'); //Non-blocking PostgreSQL client for node.js.
  7. const connectionString = 'postgres://localhost:5432/todo';
  8. const app = express();
  9.  
  10. //enable the router
  11. app.use('/', router);
  12.  
  13. //Create
  14. router.post('/api/v1/todos', (req, res, next) => {
  15.   const results = [];
  16.   console.log("Congrats you hit the create function!!");
  17.   //grab data from http-request, complete is from boolean in database
  18.   //CHANGE THIS LATER, NEED TO USE FORMIDABLE
  19.   //const data = {text: req.body.text, complete: false};
  20.   const data = {text: req.query.text, complete: false };
  21.  
  22.   //give error if request if not recieving a request
  23.   if(!req.query.text) res.send(400, "The Request data is: " + req.query);
  24.   //get a prostgres client from the connection pool
  25.   pg.connect(connectionString, (err, client, done) => {
  26.     //handle connection errors
  27.     if (err) {
  28.       done();
  29.       console.log(err);
  30.       return res.status(500).json({success: false, data: err});
  31.     }
  32.  
  33.     //SQL Query -> Insert Data
  34.     client.query('INSERT INTO items(text, complete) values($1,$2)',
  35.     [data.text, data.complete]);
  36.  
  37.     //SQL Query -> Select Data
  38.     const query = client.query("SELECT * FROM items ORDER BY id ASC");
  39.  
  40.     //Stream results back one row at a time
  41.     query.on('row', (row) => {
  42.       results.push(row);
  43.     });
  44.  
  45.     //After all data is returned, close connection and return the results
  46.     query.on('end', () => {
  47.       done();
  48.       return res.json(results);
  49.       //return res.json(data);
  50.     });
  51.   });
  52. });
  53. /*
  54. //THIS IS TEMPORARY
  55. router.post('/api/v1/todos', function (req, res) {
  56.   let results = [];
  57.   console.log("Congrats you hit the code!");
  58.   //grab data from http-request, complete is from boolean in database
  59.   console.log(req);
  60.   let data = { text: req.query.text, complete: false };
  61.  
  62.   console.log(data);
  63.   return res.json(data);
  64. });
  65. */
  66. /*
  67. //READ
  68. router.get('/api/v1/todos', function (req, res) {
  69.   let results = [];
  70.  
  71.   //get prostgres client from connection pool
  72.   pg.connect(connectionString, function (err, client, done) {
  73.     if (err) {
  74.       done();
  75.       console.log(err);
  76.       return res.status(500).json({ success: false, data: err });
  77.     }
  78.  
  79.     //SQL Query -> Select Data
  80.     const query = client.query("SELECT * FROM items ORDER BY id ASC;");
  81.  
  82.     //Stream results back one row at a time
  83.     query.on('row', function (row) {
  84.       results.push(row);
  85.     });
  86.  
  87.     //After all data is returned, close connection and return results
  88.     query.on('end', function () {
  89.       done();
  90.       return res.json(results);
  91.     });
  92.   });
  93. });
  94.  
  95. //UPDATE
  96. router.put('/api/v1/todos/:todo_id', function (req, res) {
  97.  
  98.   let results = [];
  99.  
  100.   //grab data from the URL parameters
  101.   let id = req.params.todo_id;
  102.  
  103.   //Grab data from http-request (gets, text and marks process complete)
  104.   let data = { text: req.body.text, complete: req.body.complete };
  105.  
  106.   //Get a Postgres client from the connection pool
  107.   pg.connect(connectionString, function (err, client, done) {
  108.     if (err) {
  109.       done();
  110.       console.log(err);
  111.       return res.status(500).send(json({ success: false, data: err }));
  112.     }
  113.  
  114.     //SQL Query -> Select Data
  115.     let query = client.quert("SELECT * FROM items ORDER BY id ASC");
  116.  
  117.     //Stream results back one row at a time
  118.     query.on('row', function (row) {
  119.       results.push(row);
  120.     });
  121.  
  122.     //After all data is returned, close connection and return results
  123.     query.on('end', function () {
  124.       done();
  125.       //return as json
  126.       return res.json(results);
  127.     });
  128.   });
  129. });*/
  130.  
  131. /*
  132. router.delete('/api/v1/todos/:todo_id', function(req, res) {
  133.  
  134.     const results = [];
  135.  
  136.     // Grab data from the URL parameters
  137.     const id = req.params.todo_id;
  138.  
  139.  
  140.     // Get a Postgres client from the connection pool
  141.     pg.connect(connectionString, function(err, client, done) {
  142.         // Handle connection errors
  143.         if(err) {
  144.           done();
  145.           console.log(err);
  146.           return res.status(500).json({ success: false, data: err});
  147.         }
  148.  
  149.         // SQL Query > Delete Data
  150.         client.query("DELETE FROM items WHERE id=($1)", [id]);
  151.  
  152.         // SQL Query > Select Data
  153.         const query = client.query("SELECT * FROM items ORDER BY id ASC");
  154.  
  155.         // Stream results back one row at a time
  156.         query.on('row', function(row) {
  157.             results.push(row);
  158.         });
  159.  
  160.         // After all data is returned, close connection and return results
  161.         query.on('end', function() {
  162.             done();
  163.             return res.json(results);
  164.         });
  165.     });
  166.  
  167. });
  168. */
  169.  
  170.   //blocks header from containing server info
  171.   app.disable('x-powered-by');
  172.   //set "main" as default layout, with handlebars as the engine
  173.   const handlebars = require('express-handlebars').create({ defaultLayout: 'main' });
  174.   app.engine('handlebars', handlebars.engine);
  175.   //set html as defined in "views" directory to be transported into "main.handlebars" layout
  176.   app.set('view engine', 'handlebars');
  177.  
  178.   app.use(require('body-parser').urlencoded({
  179.     extended: true
  180.   }));
  181.  
  182.   app.set('port', process.env.PORT || 3000);
  183.   //use this to import images/etc
  184.   app.use(express.static(__dirname + '/public'));
  185.  
  186.   //define roots, request object, response object
  187.   app.get('/', function (req, res) {
  188.     //render html
  189.     res.render('home');
  190.   });
  191.  
  192.   //middleware
  193.   app.use(function (req, res, next) {
  194.     console.log("Looking for URL : " + req.url);
  195.     next();
  196.   });
  197.  
  198.   /*app.get('/junk', function (req, res, next) {
  199.     console.log('Tried to access /junk');
  200.     throw new Error('/junk doesn\'t exist');
  201.   });*/
  202.  
  203.  
  204.   app.use(function (err, req, res, next) {
  205.     console.log('Error : ' + err.message);
  206.     next();
  207.   });
  208.  
  209.   //about.handlebars
  210.   app.get('/about', function (req, res) {
  211.     //render html
  212.     res.render('about');
  213.   });
  214.  
  215.   app.get('/contact', function (req, res) {
  216.     res.render('contact', {
  217.       csrf: 'CSRF token here'
  218.     });
  219.   });
  220.  
  221.   //this will be stored in a database,currently just logging it
  222.   app.post('/process', function (req, rest) {
  223.     console.log('Form' + req.query.form);
  224.     console.log('CSRF token : ' + req.body._csrf);
  225.   });
  226.  
  227.   app.use(function (req, res) {
  228.     res.type('text/html');
  229.     res.status(404);
  230.     res.render('404');
  231.   });
  232.  
  233.   app.use(function (err, req, res, next) {
  234.     console.error(err.stack);
  235.     res.status(500);
  236.     res.render('500');
  237.   });
  238.  
  239.   app.listen(app.get('port'), function () {
  240.     console.log("Express started on http://localhost:" + app.get('port'));
  241.   });
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement