/** @module routes/v1 */
// Register router
const { authorize } = require('../../utils.js');
const express = require('express');
const router = express.Router();
const BookController = require('../../controllers/BookController.js');
/** Route for getting book information */
router.get('/search/title', async (req, res) => {
await authorize([], req, res, false);
let titleString = req.query.title;
if (!titleString) {
res.status(400).send({ message: 'Missing title' });
return;
}
const amount = req.query.amount || 10;
const books = await getBooksByTitle(titleString, amount);
res.send(books);
});
module.exports = router;
// Functions
/**
* Get book information via title from the database
*
* @param {string} title
* @returns {Promise<object | null>}
*/
async function getBooksByTitle(title, amount = 10) {
const controller = new BookController();
const books = await controller.searchByTitle(title, amount);
for (const book of books) {
book.cover_url = await controller.getCoverURL(book.id);
}
return books;
}