feat(backend): moved mock bank to backend

This commit is contained in:
ribardej
2025-11-11 18:47:35 +01:00
parent 2e1dddb4f8
commit ef26e88713
3 changed files with 187 additions and 36 deletions

View File

@@ -195,44 +195,50 @@ export default function Dashboard({ onLogout }: { onLogout: () => void }) {
setIsGenerating(true);
setMockModalOpen(false);
const { count, minAmount, maxAmount, startDate, endDate, categoryIds } = options;
const newTransactions: Transaction[] = [];
const startDateTime = new Date(startDate).getTime();
const endDateTime = new Date(endDate).getTime();
for (let i = 0; i < count; i++) {
// Generate random data based on user input
const amount = parseFloat((Math.random() * (maxAmount - minAmount) + minAmount).toFixed(2));
const randomTime = Math.random() * (endDateTime - startDateTime) + startDateTime;
const date = new Date(randomTime);
const dateString = date.toISOString().split('T')[0];
const randomCategory = categoryIds.length > 0
? [categoryIds[Math.floor(Math.random() * categoryIds.length)]]
: [];
const payload = {
amount,
date: dateString,
category_ids: randomCategory,
};
try {
const created = await createTransaction(payload);
newTransactions.push(created);
} catch (err) {
console.error("Failed to create mock transaction:", err);
alert('An error occurred while generating transactions. Check the console.');
break;
try {
const base = BACKEND_URL.replace(/\/$/, '');
const url = `${base}/mock-bank/generate`;
const token = localStorage.getItem('token');
const res = await fetch(url, {
method: 'POST',
headers: {
'Content-Type': 'application/json',
...(token ? { Authorization: `Bearer ${token}` } : {}),
},
credentials: 'include',
body: JSON.stringify(options),
});
if (!res.ok) {
const text = await res.text();
throw new Error(text || `Failed to generate mock transactions (${res.status})`);
}
const generated: Array<{ amount: number; date: string; category_ids: number[]; description?: string | null }>
= await res.json();
const newTransactions: Transaction[] = [];
for (const g of generated) {
try {
const created = await createTransaction({
amount: g.amount,
date: g.date,
category_ids: g.category_ids || [],
description: g.description || undefined,
});
newTransactions.push(created);
} catch (err) {
console.error('Failed to create mock transaction:', err);
// continue creating others
}
}
alert(`${newTransactions.length} mock transactions were successfully generated!`);
} catch (err: any) {
console.error(err);
alert(err?.message || 'Failed to generate mock transactions');
} finally {
setIsGenerating(false);
await loadAll();
}
setIsGenerating(false);
alert(`${newTransactions.length} mock transactions were successfully generated!`);
await loadAll();
}
useEffect(() => { loadAll(); }, [startDate, endDate]);