From 21da2f0d49909d29faa58e28707d08a6189dae09 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Nikola=20Dere=C5=BEi=C4=87?= Date: Mon, 11 Aug 2025 13:38:59 +0200 Subject: [PATCH] optimization: projecting only what's needed --- app/lib/actions/billActions.ts | 22 ++++++++++------------ 1 file changed, 10 insertions(+), 12 deletions(-) diff --git a/app/lib/actions/billActions.ts b/app/lib/actions/billActions.ts index f618d7b..c3feb47 100644 --- a/app/lib/actions/billActions.ts +++ b/app/lib/actions/billActions.ts @@ -213,7 +213,7 @@ export const updateOrAddBill = withUser(async (user:AuthenticatedUser, locationI if (addToSubsequentMonths && billYear && billMonth) { // Get the current location to find its name const currentLocation = await dbClient.collection("lokacije") - .findOne({ _id: locationId, userId }, { projection: { bills: 0 } }); + .findOne({ _id: locationId, userId }, { projection: { name: 1 } }); if (currentLocation) { // Find all subsequent months that have the same location name @@ -228,8 +228,8 @@ export const updateOrAddBill = withUser(async (user:AuthenticatedUser, locationI "yearMonth.month": { $gt: billMonth } } ] - }, { projection: { bills: 0 } }) - .toArray(); + }, { projection: { _id: 1 } }) + .toArray(); // For each subsequent location, check if bill with same name already exists const updateOperations = []; @@ -238,12 +238,9 @@ export const updateOrAddBill = withUser(async (user:AuthenticatedUser, locationI .findOne({ _id: location._id, "bills.name": billName - }, { - projection: { - "bills.$": 1, - "bills.attachment": 0, - "bills.barcodeImage": 0 - } + }, { + // We only need to know if a matching bill exists; avoid conflicting projections + projection: { _id: 1 } }); // Only add if bill with same name doesn't already exist @@ -370,9 +367,10 @@ export const deleteBillById = withUser(async (user:AuthenticatedUser, locationID // Get the current location and bill to find the bill name and location name const location = await dbClient.collection("lokacije") .findOne({ _id: locationID, userId }, { - projection: { - "bills.attachment.fileContentsBase64": 0, - "bills.barcodeImage": 0 + projection: { + "name": 1, + "bills._id": 1, + "bills.name": 1 } });