All files / src/controllers/orders-controllers getLatestOrders.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      1x 1x                                               1x          
import OrdersModel from "../../models/Orders.js";
 
export default async function getLatestOrders(limit = 10) {
    try {
        const latestOrders = await OrdersModel.aggregate([
            { $sort: { createdAt: -1 } },
            { $limit: +limit },
            {
                $lookup: {
                    from: "users",
                    localField: "userId",
                    foreignField: "_id",
                    as: "user",
                    pipeline: [{ $project: { userEmail: 1, avatar: 1 } }]
                }
            },
            {
                $project: {
                    totalPrice: "$totalPrice",
                    products: "$products",
                    state: "$state",
                    expectedDeliveryDate: "$expectedDeliveryDate",
                    deliveryPrice: "$deliveryPrice",
                    createdAt: "$createdAt",
                    userData: { $arrayElemAt: ["$user", 0] }
                }
            }
        ]);
        return latestOrders;
    } catch (error) {
        console.log(error);
        return [];
    }
}