users.ts 1.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081
  1. import axios from 'axios';
  2. import type { User } from '../../share/types.ts';
  3. const API_BASE_URL = '/api';
  4. interface UsersResponse {
  5. data: User[];
  6. pagination: {
  7. total: number;
  8. current: number;
  9. pageSize: number;
  10. totalPages: number;
  11. };
  12. }
  13. interface UserResponse {
  14. data: User;
  15. message?: string;
  16. }
  17. interface UserCreateResponse {
  18. message: string;
  19. data: User;
  20. }
  21. interface UserUpdateResponse {
  22. message: string;
  23. data: User;
  24. }
  25. interface UserDeleteResponse {
  26. message: string;
  27. id: number;
  28. }
  29. export const UserAPI = {
  30. getUsers: async (params?: { page?: number, limit?: number, search?: string }): Promise<UsersResponse> => {
  31. try {
  32. const response = await axios.get(`${API_BASE_URL}/users`, { params });
  33. return response.data;
  34. } catch (error) {
  35. throw error;
  36. }
  37. },
  38. getUser: async (userId: number): Promise<UserResponse> => {
  39. try {
  40. const response = await axios.get(`${API_BASE_URL}/users/${userId}`);
  41. return response.data;
  42. } catch (error) {
  43. throw error;
  44. }
  45. },
  46. createUser: async (userData: Partial<User>): Promise<UserCreateResponse> => {
  47. try {
  48. const response = await axios.post(`${API_BASE_URL}/users`, userData);
  49. return response.data;
  50. } catch (error) {
  51. throw error;
  52. }
  53. },
  54. updateUser: async (userId: number, userData: Partial<User>): Promise<UserUpdateResponse> => {
  55. try {
  56. const response = await axios.put(`${API_BASE_URL}/users/${userId}`, userData);
  57. return response.data;
  58. } catch (error) {
  59. throw error;
  60. }
  61. },
  62. deleteUser: async (userId: number): Promise<UserDeleteResponse> => {
  63. try {
  64. const response = await axios.delete(`${API_BASE_URL}/users/${userId}`);
  65. return response.data;
  66. } catch (error) {
  67. throw error;
  68. }
  69. }
  70. };