Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- 'use strict';
- const express = require('express');
- const formidable = require('formidable');
- const router = express.Router(); //handles the routing of incoming requests
- const pg = require('pg'); //Non-blocking PostgreSQL client for node.js.
- const connectionString = 'postgres://localhost:5432/todo';
- const app = express();
- //enable the router
- app.use('/', router);
- //Create
- router.post('/api/v1/todos', (req, res, next) => {
- const results = [];
- console.log("Congrats you hit the create function!!");
- //grab data from http-request, complete is from boolean in database
- //CHANGE THIS LATER, NEED TO USE FORMIDABLE
- //const data = {text: req.body.text, complete: false};
- const data = {text: req.query.text, complete: false };
- //give error if request if not recieving a request
- if(!req.query.text) res.send(400, "The Request data is: " + req.query);
- //get a prostgres client from the connection pool
- pg.connect(connectionString, (err, client, done) => {
- //handle connection errors
- if (err) {
- done();
- console.log(err);
- return res.status(500).json({success: false, data: err});
- }
- //SQL Query -> Insert Data
- client.query('INSERT INTO items(text, complete) values($1,$2)',
- [data.text, data.complete]);
- //SQL Query -> Select Data
- const query = client.query("SELECT * FROM items ORDER BY id ASC");
- //Stream results back one row at a time
- query.on('row', (row) => {
- results.push(row);
- });
- //After all data is returned, close connection and return the results
- query.on('end', () => {
- done();
- return res.json(results);
- //return res.json(data);
- });
- });
- });
- /*
- //THIS IS TEMPORARY
- router.post('/api/v1/todos', function (req, res) {
- let results = [];
- console.log("Congrats you hit the code!");
- //grab data from http-request, complete is from boolean in database
- console.log(req);
- let data = { text: req.query.text, complete: false };
- console.log(data);
- return res.json(data);
- });
- */
- /*
- //READ
- router.get('/api/v1/todos', function (req, res) {
- let results = [];
- //get prostgres client from connection pool
- pg.connect(connectionString, function (err, client, done) {
- if (err) {
- done();
- console.log(err);
- return res.status(500).json({ success: false, data: err });
- }
- //SQL Query -> Select Data
- const query = client.query("SELECT * FROM items ORDER BY id ASC;");
- //Stream results back one row at a time
- query.on('row', function (row) {
- results.push(row);
- });
- //After all data is returned, close connection and return results
- query.on('end', function () {
- done();
- return res.json(results);
- });
- });
- });
- //UPDATE
- router.put('/api/v1/todos/:todo_id', function (req, res) {
- let results = [];
- //grab data from the URL parameters
- let id = req.params.todo_id;
- //Grab data from http-request (gets, text and marks process complete)
- let data = { text: req.body.text, complete: req.body.complete };
- //Get a Postgres client from the connection pool
- pg.connect(connectionString, function (err, client, done) {
- if (err) {
- done();
- console.log(err);
- return res.status(500).send(json({ success: false, data: err }));
- }
- //SQL Query -> Select Data
- let query = client.quert("SELECT * FROM items ORDER BY id ASC");
- //Stream results back one row at a time
- query.on('row', function (row) {
- results.push(row);
- });
- //After all data is returned, close connection and return results
- query.on('end', function () {
- done();
- //return as json
- return res.json(results);
- });
- });
- });*/
- /*
- router.delete('/api/v1/todos/:todo_id', function(req, res) {
- const results = [];
- // Grab data from the URL parameters
- const id = req.params.todo_id;
- // Get a Postgres client from the connection pool
- pg.connect(connectionString, function(err, client, done) {
- // Handle connection errors
- if(err) {
- done();
- console.log(err);
- return res.status(500).json({ success: false, data: err});
- }
- // SQL Query > Delete Data
- client.query("DELETE FROM items WHERE id=($1)", [id]);
- // SQL Query > Select Data
- const query = client.query("SELECT * FROM items ORDER BY id ASC");
- // Stream results back one row at a time
- query.on('row', function(row) {
- results.push(row);
- });
- // After all data is returned, close connection and return results
- query.on('end', function() {
- done();
- return res.json(results);
- });
- });
- });
- */
- //blocks header from containing server info
- app.disable('x-powered-by');
- //set "main" as default layout, with handlebars as the engine
- const handlebars = require('express-handlebars').create({ defaultLayout: 'main' });
- app.engine('handlebars', handlebars.engine);
- //set html as defined in "views" directory to be transported into "main.handlebars" layout
- app.set('view engine', 'handlebars');
- app.use(require('body-parser').urlencoded({
- extended: true
- }));
- app.set('port', process.env.PORT || 3000);
- //use this to import images/etc
- app.use(express.static(__dirname + '/public'));
- //define roots, request object, response object
- app.get('/', function (req, res) {
- //render html
- res.render('home');
- });
- //middleware
- app.use(function (req, res, next) {
- console.log("Looking for URL : " + req.url);
- next();
- });
- /*app.get('/junk', function (req, res, next) {
- console.log('Tried to access /junk');
- throw new Error('/junk doesn\'t exist');
- });*/
- app.use(function (err, req, res, next) {
- console.log('Error : ' + err.message);
- next();
- });
- //about.handlebars
- app.get('/about', function (req, res) {
- //render html
- res.render('about');
- });
- app.get('/contact', function (req, res) {
- res.render('contact', {
- csrf: 'CSRF token here'
- });
- });
- //this will be stored in a database,currently just logging it
- app.post('/process', function (req, rest) {
- console.log('Form' + req.query.form);
- console.log('CSRF token : ' + req.body._csrf);
- });
- app.use(function (req, res) {
- res.type('text/html');
- res.status(404);
- res.render('404');
- });
- app.use(function (err, req, res, next) {
- console.error(err.stack);
- res.status(500);
- res.render('500');
- });
- app.listen(app.get('port'), function () {
- console.log("Express started on http://localhost:" + app.get('port'));
- });
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement