init feature

This commit is contained in:
arrelin
2025-12-24 15:38:36 +03:00
parent 0fdc20e750
commit fcd4199cbd
15 changed files with 994 additions and 2 deletions

View File

@@ -11,6 +11,11 @@ import type {
CreateExpenseRequest,
VerifyFamilyPasswordRequest,
VerifyFamilyPasswordResponse,
ShoppingItem,
CreateShoppingItemRequest,
UpdateShoppingItemRequest,
MarkAsPurchasedRequest,
BulkOperationResponse,
} from '../types';
const API_BASE_URL = import.meta.env.VITE_API_BASE_URL || '';
@@ -87,3 +92,29 @@ export const expenseApi = {
getRemainingLimit: (familyId: number, categoryId: number) =>
apiClient.get<RemainingLimit>(`/families/${familyId}/categories/${categoryId}/remaining`),
};
export const shoppingItemApi = {
getAllByFamily: (familyId: number) =>
apiClient.get<ShoppingItem[]>(`/families/${familyId}/shopping-items`),
getById: (familyId: number, itemId: number) =>
apiClient.get<ShoppingItem>(`/families/${familyId}/shopping-items/${itemId}`),
create: (familyId: number, data: CreateShoppingItemRequest) =>
apiClient.post<ShoppingItem>(`/families/${familyId}/shopping-items`, data),
update: (familyId: number, itemId: number, data: UpdateShoppingItemRequest) =>
apiClient.put<ShoppingItem>(`/families/${familyId}/shopping-items/${itemId}`, data),
delete: (familyId: number, itemId: number) =>
apiClient.delete(`/families/${familyId}/shopping-items/${itemId}`),
markAsPurchased: (familyId: number, itemId: number, data: MarkAsPurchasedRequest) =>
apiClient.patch<ShoppingItem>(`/families/${familyId}/shopping-items/${itemId}/purchased`, data),
markAllAsPurchased: (familyId: number) =>
apiClient.post<BulkOperationResponse>(`/families/${familyId}/shopping-items/mark-all-purchased`),
clearAll: (familyId: number) =>
apiClient.delete<BulkOperationResponse>(`/families/${familyId}/shopping-items/clear-all`),
};