import api from './api'; // Типы данных export interface Address { id: number; user_id: number; type: string; address: string; city: string; postal_code: string; country: string; is_default: boolean; } export interface User { id: number; email: string; first_name: string; last_name: string; phone?: string; is_active: boolean; is_admin: boolean; created_at: string; addresses?: Address[]; } export interface UserUpdate { first_name?: string; last_name?: string; phone?: string; password?: string; email?: string; } export interface AddressCreate { type: string; address: string; city: string; postal_code: string; country: string; is_default?: boolean; } export interface AddressUpdate { type?: string; address?: string; city?: string; postal_code?: string; country?: string; is_default?: boolean; } // Сервис для работы с пользователями export const userService = { // Получить профиль текущего пользователя getCurrentUser: async (): Promise => { const response = await api.get('/users/me'); return response.data.user; }, // Обновить профиль текущего пользователя updateCurrentUser: async (userData: UserUpdate): Promise => { const response = await api.put('/users/me', userData); return response.data; }, // Добавить адрес для текущего пользователя addAddress: async (address: AddressCreate): Promise
=> { const response = await api.post('/users/me/addresses', address); return response.data; }, // Обновить адрес updateAddress: async (addressId: number, address: AddressUpdate): Promise
=> { const response = await api.put(`/users/me/addresses/${addressId}`, address); return response.data; }, // Удалить адрес deleteAddress: async (addressId: number): Promise => { await api.delete(`/users/me/addresses/${addressId}`); }, // Получить информацию о пользователе по ID (только для админов) getUserById: async (userId: number): Promise => { const response = await api.get(`/users/${userId}`); return response.data; }, // Получить список всех пользователей (только для админов) getUsers: async (params?: { skip?: number; limit?: number; search?: string; }): Promise<{ users: User[], total: number }> => { const response = await api.get('/users', { params }); return response.data; } };