import { requireAuth } from '@/server/utils/auth'; import { getExpenseById } from '@/server/utils/nocodb'; import { processExpenseWithCurrency } from '@/server/utils/currency'; export default defineEventHandler(async (event) => { await requireAuth(event); const query = getQuery(event); const { id } = query; if (!id || typeof id !== 'string') { throw createError({ statusCode: 400, statusMessage: 'Expense ID is required' }); } console.log('[get-expense-by-id] Fetching expense ID:', id); try { const expense = await getExpenseById(id); // Process expense with currency conversion const processedExpense = await processExpenseWithCurrency(expense); // Transform the response to include additional computed data const transformedExpense = { ...processedExpense, // Format the date for easier frontend consumption FormattedDate: new Date(expense.Time).toLocaleDateString(), FormattedTime: new Date(expense.Time).toLocaleTimeString(), FormattedDateTime: new Date(expense.Time).toLocaleString() }; console.log('[get-expense-by-id] Successfully fetched expense:', transformedExpense.Id); return transformedExpense; } catch (error: any) { console.error('[get-expense-by-id] Error fetching expense:', error); if (error.statusCode === 404 || error.status === 404) { throw createError({ statusCode: 404, statusMessage: `Expense with ID ${id} not found` }); } throw createError({ statusCode: 500, statusMessage: 'Failed to fetch expense' }); } });