basic AI front epta
This commit is contained in:
84
frontend/src/api/client.ts
Normal file
84
frontend/src/api/client.ts
Normal file
@@ -0,0 +1,84 @@
|
||||
import axios from 'axios';
|
||||
import type {
|
||||
Family,
|
||||
Category,
|
||||
Expense,
|
||||
RemainingLimit,
|
||||
LoginRequest,
|
||||
LoginResponse,
|
||||
CreateFamilyRequest,
|
||||
CreateCategoryRequest,
|
||||
CreateExpenseRequest,
|
||||
} from '../types';
|
||||
|
||||
const API_BASE_URL = import.meta.env.VITE_API_BASE_URL || 'http://localhost:3000';
|
||||
|
||||
const apiClient = axios.create({
|
||||
baseURL: API_BASE_URL,
|
||||
withCredentials: true,
|
||||
});
|
||||
|
||||
export const authApi = {
|
||||
login: (data: LoginRequest) =>
|
||||
apiClient.post<LoginResponse>('/login', data),
|
||||
|
||||
logout: () =>
|
||||
apiClient.post('/logout'),
|
||||
};
|
||||
|
||||
export const familyApi = {
|
||||
getAll: () =>
|
||||
apiClient.get<Family[]>('/families'),
|
||||
|
||||
getById: (id: number) =>
|
||||
apiClient.get<Family>(`/families/${id}`),
|
||||
|
||||
create: (data: CreateFamilyRequest) =>
|
||||
apiClient.post<Family>('/families', data),
|
||||
|
||||
update: (id: number, data: { name: string }) =>
|
||||
apiClient.put<Family>(`/families/${id}`, data),
|
||||
|
||||
delete: (id: number) =>
|
||||
apiClient.delete(`/families/${id}`),
|
||||
};
|
||||
|
||||
export const categoryApi = {
|
||||
getAllByFamily: (familyId: number) =>
|
||||
apiClient.get<Category[]>(`/families/${familyId}/categories`),
|
||||
|
||||
getById: (familyId: number, categoryId: number) =>
|
||||
apiClient.get<Category>(`/families/${familyId}/categories/${categoryId}`),
|
||||
|
||||
create: (familyId: number, data: CreateCategoryRequest) =>
|
||||
apiClient.post<Category>(`/families/${familyId}/categories`, data),
|
||||
|
||||
update: (familyId: number, categoryId: number, data: Partial<CreateCategoryRequest>) =>
|
||||
apiClient.put<Category>(`/families/${familyId}/categories/${categoryId}`, data),
|
||||
|
||||
delete: (familyId: number, categoryId: number) =>
|
||||
apiClient.delete(`/families/${familyId}/categories/${categoryId}`),
|
||||
|
||||
resetLimit: (familyId: number, categoryId: number, newLimit: number) =>
|
||||
apiClient.put<Category>(`/families/${familyId}/categories/${categoryId}`, { limit_amount: newLimit }),
|
||||
};
|
||||
|
||||
export const expenseApi = {
|
||||
getAllByCategory: (familyId: number, categoryId: number) =>
|
||||
apiClient.get<Expense[]>(`/families/${familyId}/categories/${categoryId}/expenses`),
|
||||
|
||||
getById: (familyId: number, categoryId: number, expenseId: number) =>
|
||||
apiClient.get<Expense>(`/families/${familyId}/categories/${categoryId}/expenses/${expenseId}`),
|
||||
|
||||
create: (familyId: number, categoryId: number, data: CreateExpenseRequest) =>
|
||||
apiClient.post<Expense>(`/families/${familyId}/categories/${categoryId}/expenses`, data),
|
||||
|
||||
update: (familyId: number, categoryId: number, expenseId: number, data: Partial<CreateExpenseRequest>) =>
|
||||
apiClient.put<Expense>(`/families/${familyId}/categories/${categoryId}/expenses/${expenseId}`, data),
|
||||
|
||||
delete: (familyId: number, categoryId: number, expenseId: number) =>
|
||||
apiClient.delete(`/families/${familyId}/categories/${categoryId}/expenses/${expenseId}`),
|
||||
|
||||
getRemainingLimit: (familyId: number, categoryId: number) =>
|
||||
apiClient.get<RemainingLimit>(`/families/${familyId}/categories/${categoryId}/remaining`),
|
||||
};
|
||||
Reference in New Issue
Block a user