router.get('/books/:slug', async (req, res) => { try { const book = await Book.getBySlug({ slug: req.params.slug }); res.json(book); } catch (err) { res.json({ error: err.message || err.toString() }); } });
router.put('/users/:userId', (req, res) => { const user = getUser(req.params.userId) if (!user) return res.status(404).json({}) user.name = req.body.name res.json(user) })
router.get('/books/:slug', async (req, res) => { try { const book = await Book.getBySlug({ slug: req.params.slug, userId: req.user && req.user.id }); res.json(book); } catch (err) { res.json({ error: err.message || err.toString() }); } });
router.delete('/users/:userId', (req, res) => { const userIndex = getUserIndex(req.params.userId) if (userIndex === -1) return res.status(404).json({}) users.splice(userIndex, 1) res.json(users) })
router.get('/users/:userId', (req, res) => { const user = getUser(req.params.userId) if (!user) return res.status(404).json({}) return res.json(user) })
router.get('/books/detail/:slug', async (req, res) => { try { const book = await Book.getBySlug({ slug: req.params.slug }); res.json(book); } catch (err) { res.json({ error: err.message || err.toString() }); } });
router.put('/users/:userId', (req, res) => { const user = getUser(req.params.userId) if (!user) return res.status(404).json({}) user.name = req.body.name res.json(user) })
router.get('/books/detail/:slug', async (req, res) => { try { const book = await Book.getBySlug({ slug: req.params.slug }); res.json(book); } catch (err) { res.json({ error: err.message || err.toString() }); } });
router.get('/users/:userId', (req, res) => { const user = getUser(req.params.userId) if (!user) return res.status(404).json({}) return res.json(user) })
router.get('/books/:slug', async (req, res) => { try { const book = await Book.getBySlug({ slug: req.params.slug, userId: req.user && req.user.id }); res.json(book); } catch (err) { res.json({ error: err.message || err.toString() }); } });
router.get('/books/:slug', async (req, res) => { try { const book = await Book.getBySlug({ slug: req.params.slug, userId: req.user && req.user.id }); res.json(book); } catch (err) { res.json({ error: err.message || err.toString() }); } });
router.get('/books/detail/:slug', async (req, res) => { try { const book = await Book.getBySlug({ slug: req.params.slug }); res.json(book); } catch (err) { res.json({ error: err.message || err.toString() }); } });
router.get('/books/detail/:slug', async (req, res) => { try { const book = await Book.getBySlug({ slug: req.params.slug }); res.json(book); } catch (err) { res.json({ error: err.message || err.toString() }); } });
router.get('/books/:slug', async (req, res) => { try { const book = await Book.getBySlug({ slug: req.params.slug, userId: req.user && req.user.id }); res.json(book); } catch (err) { res.json({ error: err.message || err.toString() }); } });
router.get('/books/detail/:slug', async (req, res) => { try { const book = await Book.getBySlug({ slug: req.params.slug }); res.json(book); } catch (err) { res.json({ error: err.message || err.toString() }); } });