var express = require('express'); var router = express.Router(); var utils = require('./utils'); var db = require('./DBManager'); router.get('/status', (req, res) => { var d = new Date(); res.send({ Status: "OK", Mantra: "KISS - Yo!", Time: d.toString() }); }); router.post('/login', (req, res) => { if (!req.body.username || !req.body.password) { utils.response_400(res, { username: "JhonSnow", password: "I-know_nothing" }); } else { var query = db.createQuery('User') .filter('username', req.body.username) .filter('password', req.body.password); db.runQuery(query, (err, entities) => { if (err || entities.length !== 1) { res.send({ status: "OK", user: null }); } else { entities = entities.map(utils.convertToUserObj); res.send({ status: "OK", user: entities[0] }); } }); } }); router.post('/register', (req, res) => { if (!req.body.username || !req.body.password || !req.body.email) { utils.response_400(res, { username: "JhonSnow", password: "I-know_nothing", email: "jhon@nights_watch.com" }); } else { var query = db.createQuery('User') .filter('username', req.body.username); db.runQuery(query, (err, entities) => { if (err || entities.length === 1) { res.send({ status: "Error", message: "User name exists" }); } else { db.save({ key: db.key('User'), data: { username: req.body.username, password: req.body.password, email: req.body.email, creation_time: new Date(), avatar: 'http://www.aljazeera.com/mritems/images/site/DefaultAvatar.jpg' } }, function (err, user) { if (err) { utils.response_500(res, "DB Error"); } else { res.statusCode = 201; res.send({ status: "OK", message: "created" }); } }); } }); } }); router.post('/user/upsert', (req, res) => {}); router.post('/note/upsert', (req, res) => { if (!req.body || !req.body.title || !req.body.body || !req.body.owner_id || !req.body.address) { utils.response_400(res, { title: "Note To Self", body: "I know nothing!!!", lat: 35.01, lng: 51.2, address: "Some Where over the rainbow", tags: ['nofilter', 'testing', 'education'], owner_id: 123, is_public: true }); } else { if (req.body.id) { //Update a Note var key = db.key(['Note', Number(req.body.id)]); db.get(key, (err, entity) => { if (err) { utils.response_500(res, "DB Error"); } else { if (!entity) { utils.response_400(res, { title: "Note To Self", body: "I know nothing!!!", lat: 35.01, lng: 51.2, address: "Some Where over the rainbow", tags: ['nofilter', 'testing', 'education'], owner_id: 123, is_public: true }, "id not valid - No Notes with that ID"); } else { entity.data.title = req.body.title || entity.data.title; entity.data.body = req.body.body || entity.data.body; entity.data.lat = req.body.lat || entity.data.lat; entity.data.lng = req.body.lng || entity.data.lng; entity.data.address = req.body.address || entity.data.address; entity.data.tags = req.body.tags || entity.data.tags; entity.data.is_public = req.body.is_public || entity.data.is_public; db.save(entity, (err, _resp) => { if (err) { utils.response_500(res, "DB Error"); } else { res.send(utils.convertToNoteObj(entity)); } }); } } }); } else { //** Create a new Note **// db.save({ key: db.key('Note'), data: { title: req.body.title, lat: req.body.lat, lng: req.body.lng, address: req.body.address, body: req.body.body, owner_id: req.body.owner_id, is_public: req.body.is_public || false, created_at: new Date(), likes: 0, tags: req.body.tags || [], } }, (err, response) => { if (err) { utils.response_500(res, "DB Error"); } else { res.statusCode = 201; var id = Number(response.mutationResults[0].key.path[0].id); var key = db.key(['Note', id]); db.get(key, (err, entity) => { console.log(JSON.stringify(entity, null, 2)); if (!err) res.send({ status: "OK", note: utils.convertToNoteObj(entity) }); else utils.response_500(res, "DB Error->" + err); }); } }); } } }); router.get('/note/all', (req, res) => { if (!req.query.uid) { utils.response_400(res, "uid=123", "Missing uid in query string"); } else { var query = db.createQuery('Note') .filter('owner_id', req.query.uid); // .order('creation_time', { // descending: true // }); db.runQuery(query, (err, entities) => { if (err || entities.length < 1) { res.send({ status: (err ? "Error" : "OK"), message: err ? "DB error, " + err : "No Notes", notes: (err ? null : []) }); } else { entities = entities.map(utils.convertToNoteObj); res.send({ status: "OK", notes: entities }); } }); } }); module.exports = router; // // about page route (http://localhost:8080/about) // router.get('/about', function(req, res) { // res.send('im the about page!'); // });