Source: routes/v1/search-text.js

/** @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;
}