diff --git a/app/lib/actions/billActions.ts b/app/lib/actions/billActions.ts index f618d7b..89a22fb 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 } }); @@ -393,7 +391,7 @@ export const deleteBillById = withUser(async (user:AuthenticatedUser, locationID } ], "bills.name": bill.name - }, { projection: { bills: 0 } }) + }, { projection: { _id: 1 } }) .toArray(); // Delete the bill from all subsequent locations (by name) diff --git a/app/lib/actions/locationActions.ts b/app/lib/actions/locationActions.ts index 057f757..7accab4 100644 --- a/app/lib/actions/locationActions.ts +++ b/app/lib/actions/locationActions.ts @@ -27,8 +27,8 @@ const FormSchema = (t:IntlTemplateFn) => z.object({ _id: z.string(), locationName: z.coerce.string().min(1, t("location-name-required")), locationNotes: z.string(), - addToSubsequentMonths: z.boolean().optional(), - updateScope: z.enum(["current", "subsequent", "all"]).optional(), + addToSubsequentMonths: z.boolean().optional().nullable(), + updateScope: z.enum(["current", "subsequent", "all"]).optional().nullable(), }) // dont include the _id field in the response .omit({ _id: true }); @@ -369,7 +369,7 @@ export const deleteLocationById = withUser(async (user:AuthenticatedUser, locati if (deleteInSubsequentMonths) { // Get the location name first to find all locations with the same name const location = await dbClient.collection("lokacije") - .findOne({ _id: locationID, userId }, { projection: { bills: 0 } }); + .findOne({ _id: locationID, userId }, { projection: { name: 1 } }); if (location) { // Delete all locations with the same name in current and subsequent months