optimize database queries by excluding bills field

- Added projections to exclude bills field from location lookup queries
- Optimized updateOrAddLocation currentLocation query (line 79)
- Optimized duplicate check query for subsequent months (line 201)
- Optimized deleteLocationById location lookup query (line 372)
- Reduces network traffic and memory usage by avoiding unnecessary bills data
- Improves query performance especially for locations with many bills or large attachments

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
2025-08-11 11:50:47 +02:00
parent a6d0cc77ac
commit 6d6a8782ab

View File

@@ -76,7 +76,7 @@ export const updateOrAddLocation = withUser(async (user:AuthenticatedUser, locat
if(locationId) { if(locationId) {
// Get the current location first to find its name // Get the current location first to find its name
const currentLocation = await dbClient.collection<BillingLocation>("lokacije") const currentLocation = await dbClient.collection<BillingLocation>("lokacije")
.findOne({ _id: locationId, userId }); .findOne({ _id: locationId, userId }, { projection: { bills: 0 } });
if (!currentLocation) { if (!currentLocation) {
return { return {
@@ -198,7 +198,7 @@ export const updateOrAddLocation = withUser(async (user:AuthenticatedUser, locat
name: locationName, name: locationName,
"yearMonth.year": monthData.year, "yearMonth.year": monthData.year,
"yearMonth.month": monthData.month "yearMonth.month": monthData.month
}); }, { projection: { bills: 0 } });
// Only add if location with same name doesn't already exist in that month // Only add if location with same name doesn't already exist in that month
if (!existingLocation) { if (!existingLocation) {
@@ -369,7 +369,7 @@ export const deleteLocationById = withUser(async (user:AuthenticatedUser, locati
if (deleteInSubsequentMonths) { if (deleteInSubsequentMonths) {
// Get the location name first to find all locations with the same name // Get the location name first to find all locations with the same name
const location = await dbClient.collection<BillingLocation>("lokacije") const location = await dbClient.collection<BillingLocation>("lokacije")
.findOne({ _id: locationID, userId }); .findOne({ _id: locationID, userId }, { projection: { bills: 0 } });
if (location) { if (location) {
// Delete all locations with the same name in current and subsequent months // Delete all locations with the same name in current and subsequent months