All files / src/controllers/statistics-controllers mostPopularSeries.js

60% Statements 3/5
0% Branches 0/1
100% Functions 1/1
60% Lines 3/5

Press n or j to go to the next uncovered block, b, p or k for the previous block.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40        2x 2x                                                       2x            
import ProductsModel from "../../models/Products.js";
 
 
export default async function mostPopularSeries(limit = 5) {
    try {
        const [products] = await ProductsModel.aggregate([
            {
                $facet: {
                    topSold: [
                        {
                            $group: {
                                _id: "$series",
                                value: { $sum: "$sold" },
                            }
                        },
                        { $project: { series: "$_id", value: 1, _id: 0 } },
                        { $sort: { value: -1 } },
                        { $limit: +limit }
                    ],
                    topEarnings: [
                        {
                            $group: {
                                _id: "$series",
                                value: { $sum: "$earnings" }
                            }
                        },
                        { $project: { series: "$_id", value: 1, _id: 0 } },
                        { $sort: { value: -1 } },
                        { $limit: +limit }
                    ]
                }
            }
        ])
        return products;
    } catch (error) {
        console.log(error)
        return null;
    }
}