users.ts 1.7 KB

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