const express = require('express'); const req = require('express/lib/request'); module.exports = function (options) { const db = options.db; var router = express.Router(); router.route('/') .get(function(request, response, next) { db.Entry.findAll({ }).then(entries => { response.display("library", { user: request.user, pageTitle: "Library - Mantra", entries: entries }) }).catch(error => { next(error) }) }) router.route('/add') .get(function(request, response, next) { if (request.user) { response.display("library-form", { user: request.user, pageTitle: "Add Library - Mantra", entry: { version: "1.0" } }) } else { next() } }) .post(function(request, response, next) { if (request.user) { db.Dialect.findOne({ where: { languageId: "en", countryId: "int" } }).then(dialect => { if (dialect) { return db.Entry.create({ name: request.body.name, url: request.body.url, dialectId: dialect.id, licenseId: "copyright", entryVersions: [ { tag: request.body.version } ] }, { include: [ { association: db.Entry.EntryVersions, } ] }) } else { response.redirect("/library/add") // TODO: Show error message on missing dialect... } }).then(entry => { if (entry) { response.redirect(`/library/${entry.id}`) } else { next() } }).catch(error => { next(error) }) } else { next() } }) router.route('/:id') .get(function(request, response, next) { db.Entry.findByPk(request.params.id, { include: [ { association: db.Entry.EntryApproval }, { association: db.Entry.EntryVersions } ] }).then(entry => { if (entry) { if (entry.entryVersions.length == 1) { response.redirect(`/v/${entry.entryVersions[0].id}`) } else { response.display("entry", { user: request.user, pageTitle: "Library - Mantra", entry: entry }) } } else { next() } }).catch(error => { next(error) }) }) return router; };