mongo projekcija proširena property-em "hasAttachment"

This commit is contained in:
2025-01-13 16:05:15 +01:00
parent 6ceff261fb
commit 103e371d5f
3 changed files with 40 additions and 13 deletions

View File

@@ -110,13 +110,32 @@ export const fetchAllLocations = withUser(async (user:AuthenticatedUser, year:nu
// fetch all locations for the given year
const locations = await dbClient.collection<BillingLocation>("lokacije")
.find(
.aggregate([
{
userId,
"yearMonth.year": year,
$match: {
userId,
"yearMonth.year": year,
},
},
{
projection: {
$addFields: {
bills: {
$map: {
input: "$bills",
as: "bill",
in: {
_id: "$$bill._id",
name: "$$bill.name",
paid: "$$bill.paid",
payedAmount: "$$bill.payedAmount",
hasAttachment: { $ne: ["$$bill.attachment", null] },
},
},
},
},
},
{
$project: {
"_id": 1,
// "userId": 0,
// "userEmail": 0,
@@ -130,17 +149,20 @@ export const fetchAllLocations = withUser(async (user:AuthenticatedUser, year:nu
"bills.name": 1,
"bills.paid": 1,
"bills.payedAmount": 1,
"bills.hasAttachment": 1,
// "bills.attachment": 0,
// "bills.notes": 0,
// "bills.barcodeImage": 1,
},
}
)
.sort({
"yearMonth.year": -1,
"yearMonth.month": -1,
name: 1,
})
},
{
$sort: {
"yearMonth.year": -1,
"yearMonth.month": -1,
name: 1,
},
},
])
.toArray();
return(locations)

View File

@@ -42,6 +42,11 @@ export interface Bill {
payedAmount?: number | null;
/** attached document (optional) */
attachment?: BillAttachment|null;
/**
* true if there an attachment
* @description this field enables us to send this info to the client without sending large attachment - it's an optimization
*/
hasAttachment: boolean;
/** (optional) notes */
notes?: string|null;
/** (optional) image data containing PDF471 bar code */