diff options
author | 2025-04-25 02:26:24 +0530 | |
---|---|---|
committer | 2025-04-25 02:26:24 +0530 | |
commit | 5b23b22c60027f18dfb218789eea0e1e6dc38a37 (patch) | |
tree | 8560b4b8ac4d75b154f00f5fad31964b71e4e2ad /frontend/src/lib/api.ts | |
parent | ff2031f6ff6f4a7e6d441c9ed2372f004ba34499 (diff) | |
download | finance-5b23b22c60027f18dfb218789eea0e1e6dc38a37.tar.gz finance-5b23b22c60027f18dfb218789eea0e1e6dc38a37.tar.bz2 finance-5b23b22c60027f18dfb218789eea0e1e6dc38a37.zip |
finance/backend: feat: added v1/transactions for accounts CRUD
Diffstat (limited to 'frontend/src/lib/api.ts')
-rw-r--r-- | frontend/src/lib/api.ts | 67 |
1 files changed, 67 insertions, 0 deletions
diff --git a/frontend/src/lib/api.ts b/frontend/src/lib/api.ts index be77f16..e654007 100644 --- a/frontend/src/lib/api.ts +++ b/frontend/src/lib/api.ts @@ -109,6 +109,73 @@ export const accountApi = { }) }; +// Transaction API +export interface Transaction { + ID: number; + CreatedAt: string; + UpdatedAt: string; + DeletedAt: string | null; + UserID: number; + AccountID: number | null; + Description: string; + Amount: number; + Type: "Income" | "Expense"; + Date: string; + Category: string; +} + +export interface TransactionInput { + description: string; + amount: number; + type: "Income" | "Expense"; + date: string; // YYYY-MM-DD format + category: string; + accountId?: number; +} + +export interface TransactionFilters { + type?: "Income" | "Expense"; + accountId?: number; + category?: string; + startDate?: string; // YYYY-MM-DD format + endDate?: string; // YYYY-MM-DD format +} + +export const transactionApi = { + getTransactions: (filters?: TransactionFilters) => { + let queryParams = ''; + + if (filters) { + const params = new URLSearchParams(); + if (filters.type) params.append('type', filters.type); + if (filters.accountId) params.append('account_id', filters.accountId.toString()); + if (filters.category) params.append('category', filters.category); + if (filters.startDate) params.append('start_date', filters.startDate); + if (filters.endDate) params.append('end_date', filters.endDate); + + queryParams = `?${params.toString()}`; + } + + return fetchWithAuth(`/transactions${queryParams}`); + }, + + getTransaction: (id: number) => fetchWithAuth(`/transactions/${id}`), + + createTransaction: (transaction: TransactionInput) => fetchWithAuth('/transactions', { + method: 'POST', + body: JSON.stringify(transaction) + }), + + updateTransaction: (id: number, transaction: Partial<TransactionInput>) => fetchWithAuth(`/transactions/${id}`, { + method: 'PUT', + body: JSON.stringify(transaction) + }), + + deleteTransaction: (id: number) => fetchWithAuth(`/transactions/${id}`, { + method: 'DELETE' + }) +}; + // Loan API export interface Loan { ID: number; |