cospend: display all payments + less logging
Some checks failed
CI / update (push) Failing after 5s

This commit is contained in:
2025-09-12 20:54:23 +02:00
parent db3de29e48
commit b03ba61599
2 changed files with 13 additions and 29 deletions

View File

@@ -5,13 +5,13 @@ import { dbConnect } from '../../../../utils/db';
export const GET: RequestHandler = async ({ url, locals }) => {
const session = await locals.auth();
if (!session || !session.user?.nickname) {
return json({ error: 'Unauthorized' }, { status: 401 });
}
await dbConnect();
try {
// Get query parameters for date range (default to last 12 months)
@@ -20,10 +20,6 @@ export const GET: RequestHandler = async ({ url, locals }) => {
const startDate = new Date();
startDate.setMonth(startDate.getMonth() - monthsBack);
// First, let's get all payments and see what we have
console.log('Searching for payments for user:', session.user.nickname);
console.log('Date range:', startDate.toISOString(), 'to', endDate.toISOString());
const totalPayments = await Payment.countDocuments();
const paymentsInRange = await Payment.countDocuments({
date: {
@@ -36,14 +32,9 @@ export const GET: RequestHandler = async ({ url, locals }) => {
$gte: startDate,
$lte: endDate
},
category: { $ne: 'settlement' },
$or: [
{ paidBy: session.user.nickname },
{ createdBy: session.user.nickname }
]
category: { $ne: 'settlement' }
});
console.log('Total payments:', totalPayments, 'In date range:', paymentsInRange, 'User expenses:', expensePayments);
// Aggregate payments by month and category
const pipeline = [
{
@@ -54,11 +45,6 @@ export const GET: RequestHandler = async ({ url, locals }) => {
},
// Exclude settlements - only show actual expenses
category: { $ne: 'settlement' },
// Only include payments where current user is involved
$or: [
{ paidBy: session.user.nickname },
{ createdBy: session.user.nickname }
]
}
},
{
@@ -109,20 +95,20 @@ export const GET: RequestHandler = async ({ url, locals }) => {
results.forEach((result: any) => {
const { yearMonth, category } = result._id;
const amount = result.totalAmount;
categories.add(category);
if (!monthsMap.has(yearMonth)) {
monthsMap.set(yearMonth, {});
}
monthsMap.get(yearMonth)[category] = amount;
});
// Convert to arrays for Chart.js
const months = Array.from(monthsMap.keys()).sort();
const categoryList = Array.from(categories).sort();
const datasets = categoryList.map((category: string) => ({
label: category,
data: months.map(month => monthsMap.get(month)[category] || 0)
@@ -142,4 +128,4 @@ export const GET: RequestHandler = async ({ url, locals }) => {
console.error('Error fetching monthly expenses:', error);
return json({ error: 'Failed to fetch monthly expenses' }, { status: 500 });
}
};
};

View File

@@ -66,13 +66,11 @@
async function fetchMonthlyExpenses() {
try {
expensesLoading = true;
console.log('Fetching monthly expenses...');
const response = await fetch('/api/cospend/monthly-expenses');
if (!response.ok) {
throw new Error('Failed to fetch monthly expenses');
}
monthlyExpensesData = await response.json();
console.log('Monthly expenses data:', monthlyExpensesData);
} catch (err) {
console.error('Error fetching monthly expenses:', err);
// Don't show this error in the main error state
@@ -170,15 +168,15 @@
{#if expensesLoading}
<div class="loading">Loading monthly expenses chart...</div>
{:else if monthlyExpensesData.datasets && monthlyExpensesData.datasets.length > 0}
<BarChart
data={monthlyExpensesData}
<BarChart
data={monthlyExpensesData}
title="Monthly Expenses by Category"
height="400px"
/>
{:else}
<div class="loading">
Debug: expensesLoading={expensesLoading},
datasets={monthlyExpensesData.datasets?.length || 0},
Debug: expensesLoading={expensesLoading},
datasets={monthlyExpensesData.datasets?.length || 0},
data={JSON.stringify(monthlyExpensesData)}
</div>
{/if}