dressed_for_succes_store/frontend/services/users.ts

115 lines
3.3 KiB
TypeScript
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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<User> => {
const response = await api.get('/users/me');
return response.data.user;
},
// Обновить профиль текущего пользователя
updateCurrentUser: async (userData: UserUpdate): Promise<User> => {
const response = await api.put('/users/me', userData);
return response.data;
},
// Добавить адрес для текущего пользователя
addAddress: async (address: AddressCreate): Promise<Address> => {
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<Address> => {
const response = await api.put(`/users/me/addresses/${addressId}`, address);
return response.data;
},
// Удалить адрес
deleteAddress: async (addressId: number): Promise<void> => {
await api.delete(`/users/me/addresses/${addressId}`);
},
// Получить информацию о пользователе по ID (только для админов)
getUserById: async (userId: number): Promise<User> => {
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;
}
};