//nodemon Todo //https://www.section.io/engineering-education/a-raw-nodejs-rest-api-without-frameworks-such-as-express/ var http = require('http'); var sqlite3 = require('sqlite3').verbose(); //var db = new sqlite3.Database('Todo.db'); //db.run("CREATE TABLE IF NOT EXISTS todo (text TEXT)"); //var stmt = db.prepare("INSERT INTO todo VALUES (?)"); //stmt.run('Sample data 1'); //stmt.run('Anoter data 2'); //stmt.finalize(); const hostname = '127.0.0.1'; const port = 3002; var server = http.createServer(function(req, res) { const { headers, method, url } = req; let body = []; req.on('error', (err) => { console.error(err); }).on('data', (chunk) => { body.push(chunk); }).on('end', () => { body = Buffer.concat(body).toString(); console.log('we up here', body); // At this point, we have the headers, method, url and body, and can now // do whatever we need to in order to respond to this request. if(req.url=='/add') { let db = new sqlite3.Database('Todo.db'); let responseBody = 'add'; console.log('textt to add:'+body); text = JSON.parse(body)['text']; // insert one row into the table db.run(`INSERT INTO todo(text) VALUES(?)`, text , function(err) { if (err) { return console.log(err.message); } }); // close the database connection db.close(); res.writeHead(200, {'Content-Type': 'application/json','Access-Control-Allow-Origin': '*'}); res.end(JSON.stringify([])) } else if (req.url=='/delete'){ let db = new sqlite3.Database('Todo.db'); let responseBody = 'no ger'; console.log('hi body'+body); rowid = JSON.parse(body)['rowid']; // insert one row into the table db.run(`DELETE FROM table WHERE rowid = (?);`, rowid , function(err) { if (err) { return console.log(err.message); } }); // close the database connection db.close(); } else if (req.url=='/update'){ let db = new sqlite3.Database('Todo.db'); let responseBody = 'no ger'; console.log('hi body'+body); text = JSON.parse(body)['text']; rowid = JSON.parse(body)['rowid']; // insert one row into the table db.run(`UPDATE table SET text = (?) WHERE rowid = (?);`, [rowid,text] , function(err) { if (err) { return console.log(err.message); } }); // close the database connection db.close(); } }); var message = ''; if (req.url=='/'){ res.writeHead(200, {'Content-Type': 'text/html'}); message = ` Hello World
`; let response = message; res.end(response); } else if(req.url=='/view') { let db = new sqlite3.Database('Todo.db'); let responseBody = 'no ger'; db.all("SELECT rowid, text FROM todo", function(err, row) { res.writeHead(200, {'Content-Type': 'application/json','Access-Control-Allow-Origin': '*'}); //DONT DO DTHIS IN PRODUCTION!!! res.end(JSON.stringify(row)) }); db.close(); } else if(req.url=='/init') { let db = new sqlite3.Database('Todo.db'); db.run("CREATE TABLE IF NOT EXISTS todo (text TEXT)"); db.close(); } else { message = 'far away home'; let response = message; res.end(response); } }); server.listen(port, hostname, () => { console.log(`Server running at http://${hostname}:${port}/`); });