admins.service.ts 1.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445
  1. import http from '@/core/api/http'
  2. import type {
  3. AdminDetailResponse,
  4. AdminPayload,
  5. AdminsListResponse,
  6. } from '@/types/admins.types'
  7. import type { ApiResponse, PaginationParams } from '@/types/common.types'
  8. const BASE_URL = '/admin/admins'
  9. export const adminsService = {
  10. list: async (params?: PaginationParams) => {
  11. const searchParams = new URLSearchParams()
  12. if (params?.page) searchParams.set('page', String(params.page))
  13. if (params?.per_page) searchParams.set('per_page', String(params.per_page))
  14. const query = searchParams.toString()
  15. const url = query ? `${BASE_URL}?${query}` : BASE_URL
  16. return http.get<AdminsListResponse>(url)
  17. },
  18. detail: async (adminId: number | string) => {
  19. const response = await http.get<AdminDetailResponse>(
  20. `${BASE_URL}/${adminId}`
  21. )
  22. return response.data.admin
  23. },
  24. create: async (payload: AdminPayload) => {
  25. return http.post<ApiResponse<unknown>, AdminPayload>(BASE_URL, payload)
  26. },
  27. update: async (adminId: number | string, payload: AdminPayload) => {
  28. return http.put<ApiResponse<unknown>, AdminPayload>(
  29. `${BASE_URL}/${adminId}`,
  30. payload
  31. )
  32. },
  33. delete: async (adminId: number | string) => {
  34. return http.delete(`${BASE_URL}/${adminId}`)
  35. },
  36. }