import api from './api'; // Типы данных export interface Address { id: number; user_id: number; address_line1: string; address_line2?: string; city: string; state: string; postal_code: string; country: string; is_default: boolean; created_at: string; updated_at?: string; } 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 { address_line1: string; address_line2?: string; city: string; state: string; postal_code: string; country: string; is_default?: boolean; } export interface AddressUpdate { address_line1?: string; address_line2?: string; city?: string; state?: 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
=> { console.log('Отправка запроса на добавление адреса:', address); try { const response = await api.post('/users/me/addresses', address); console.log('Успешный ответ от сервера:', response.data); return response.data; } catch (error) { console.error('Ошибка при добавлении адреса:', error); if (error.response) { console.error('Статус ответа:', error.response.status); console.error('Данные ответа:', error.response.data); } throw error; } }, // Обновить адрес 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; } };