"use strict"; const Promise = require("bluebird"); const express = require("express"); const expressPromiseRouter = require("express-promise-router"); const initialize = require("./initialize"); return Promise.try(() => { return initialize(); }).then((state) => { let { db, knex } = state; let app = express(); let router = expressPromiseRouter(); router.get("/items/:id", (req, res) => { return Promise.try(() => { return db.Item.query(knex).findById(req.params.id); }).then((item) => { if (item != null) { res.json(item); } else { throw new errors.NotFound(`No such item exists`); } }); }); router.delete("/items/:id", (req, res) => { return Promise.try(() => { return db.Item.query(knex) .findById(req.params.id) .delete(); }).then((affectedRows) => { if (affectedRows > 0) { res.status(204).end(); } else { throw new errors.NotFound(`No such item exists`); } }); }); // MARKER: Stub out routes, replace error implementation, add response generation for HTTP errors, write database migration, implement parsing engine core router.get("/items/:id/metadata", (req, res) => { }); router.get("/items/:id/operations", (req, res) => { }); router.get("/items/:id/operations/:operation/expire", (req, res) => { }); router.post("/items/add", (req, res) => { }); router.put("/items/add/:id", (req, res) => { }); router.get("/items/:id", (req, res) => { }); app.use(router); app.listen(3000); });