diff --git a/server/utils/queries/authorFilters.js b/server/utils/queries/authorFilters.js index e684232b..1faf3e55 100644 --- a/server/utils/queries/authorFilters.js +++ b/server/utils/queries/authorFilters.js @@ -4,43 +4,44 @@ const Database = require('../../Database') module.exports = { /** * Get authors total count + * * @param {string} libraryId - * @returns {number} count + * @returns {Promise} count */ async getAuthorsTotalCount(libraryId) { const authorsCount = await Database.authorModel.count({ where: { libraryId: libraryId } - }); - return authorsCount; + }) + return authorsCount }, /** * Get authors with count of num books - * @param {string} libraryId - * @param {number} limit - * @returns {{id:string, name:string, count:number}} + * + * @param {string} libraryId + * @param {number} limit + * @returns {Promise<{id:string, name:string, count:number}>} */ async getAuthorsWithCount(libraryId, limit) { const authors = await Database.bookAuthorModel.findAll({ - include: [{ - model: Database.authorModel, - as: 'author', // Use the correct alias as defined in your associations - attributes: ['name'], - where: { - libraryId: libraryId + include: [ + { + model: Database.authorModel, + as: 'author', // Use the correct alias as defined in your associations + attributes: ['name'], + where: { + libraryId: libraryId + } } - }], - attributes: [ - 'authorId', - [Sequelize.fn('COUNT', Sequelize.col('authorId')), 'count'] ], + attributes: ['authorId', [Sequelize.fn('COUNT', Sequelize.col('authorId')), 'count']], group: ['authorId', 'author.id'], // Include 'author.id' to satisfy GROUP BY with JOIN order: [[Sequelize.literal('count'), 'DESC']], limit: limit }) - return authors.map(au => { + return authors.map((au) => { return { id: au.authorId, name: au.author.name, @@ -51,11 +52,12 @@ module.exports = { /** * Search authors - * @param {string} libraryId - * @param {string} query + * + * @param {string} libraryId + * @param {string} query * @param {number} limit * @param {number} offset - * @returns {object[]} oldAuthor with numBooks + * @returns {Promise} oldAuthor with numBooks */ async search(libraryId, query, limit, offset) { const authors = await Database.authorModel.findAll({ @@ -66,9 +68,7 @@ module.exports = { libraryId }, attributes: { - include: [ - [Sequelize.literal('(SELECT count(*) FROM bookAuthors ba WHERE ba.authorId = author.id)'), 'numBooks'] - ] + include: [[Sequelize.literal('(SELECT count(*) FROM bookAuthors ba WHERE ba.authorId = author.id)'), 'numBooks']] }, limit, offset