optimization: projecting only what's needed

This commit is contained in:
2025-08-11 13:38:59 +02:00
parent dababe6880
commit 21da2f0d49

View File

@@ -213,7 +213,7 @@ export const updateOrAddBill = withUser(async (user:AuthenticatedUser, locationI
if (addToSubsequentMonths && billYear && billMonth) { if (addToSubsequentMonths && billYear && billMonth) {
// Get the current location to find its name // Get the current location to find its name
const currentLocation = await dbClient.collection<BillingLocation>("lokacije") const currentLocation = await dbClient.collection<BillingLocation>("lokacije")
.findOne({ _id: locationId, userId }, { projection: { bills: 0 } }); .findOne({ _id: locationId, userId }, { projection: { name: 1 } });
if (currentLocation) { if (currentLocation) {
// Find all subsequent months that have the same location name // Find all subsequent months that have the same location name
@@ -228,7 +228,7 @@ export const updateOrAddBill = withUser(async (user:AuthenticatedUser, locationI
"yearMonth.month": { $gt: billMonth } "yearMonth.month": { $gt: billMonth }
} }
] ]
}, { projection: { bills: 0 } }) }, { projection: { _id: 1 } })
.toArray(); .toArray();
// For each subsequent location, check if bill with same name already exists // For each subsequent location, check if bill with same name already exists
@@ -239,11 +239,8 @@ export const updateOrAddBill = withUser(async (user:AuthenticatedUser, locationI
_id: location._id, _id: location._id,
"bills.name": billName "bills.name": billName
}, { }, {
projection: { // We only need to know if a matching bill exists; avoid conflicting projections
"bills.$": 1, projection: { _id: 1 }
"bills.attachment": 0,
"bills.barcodeImage": 0
}
}); });
// Only add if bill with same name doesn't already exist // Only add if bill with same name doesn't already exist
@@ -371,8 +368,9 @@ export const deleteBillById = withUser(async (user:AuthenticatedUser, locationID
const location = await dbClient.collection<BillingLocation>("lokacije") const location = await dbClient.collection<BillingLocation>("lokacije")
.findOne({ _id: locationID, userId }, { .findOne({ _id: locationID, userId }, {
projection: { projection: {
"bills.attachment.fileContentsBase64": 0, "name": 1,
"bills.barcodeImage": 0 "bills._id": 1,
"bills.name": 1
} }
}); });