46 lines
1.4 KiB
TypeScript
46 lines
1.4 KiB
TypeScript
import { adminApiClient } from './client'
|
|
import type { UserDto, PaginatedResponse } from '@/types/models'
|
|
|
|
export const usersApi = {
|
|
// Get all users with pagination
|
|
getUsers: async (params?: {
|
|
page?: number
|
|
limit?: number
|
|
search?: string
|
|
}): Promise<PaginatedResponse<UserDto>> => {
|
|
const response = await adminApiClient.get('/api/admin/users', {
|
|
params: {
|
|
page: params?.page || 1,
|
|
limit: params?.limit || 20,
|
|
search: params?.search || undefined,
|
|
},
|
|
})
|
|
// Transform backend response (users) to frontend format (items)
|
|
const backendData = response.data
|
|
return {
|
|
items: backendData.users || [],
|
|
total: backendData.total || 0,
|
|
page: backendData.page || 1,
|
|
limit: backendData.limit || 20,
|
|
totalPages: backendData.totalPages || 1,
|
|
}
|
|
},
|
|
|
|
// Get single user by ID
|
|
getUser: async (userId: string): Promise<UserDto> => {
|
|
const response = await adminApiClient.get(`/api/admin/users/${userId}`)
|
|
return response.data
|
|
},
|
|
|
|
// Update user
|
|
updateUser: async (userId: string, user: Partial<UserDto>): Promise<UserDto> => {
|
|
const response = await adminApiClient.patch(`/api/admin/users/${userId}`, user)
|
|
return response.data
|
|
},
|
|
|
|
// Delete user
|
|
deleteUser: async (userId: string): Promise<{ message: string }> => {
|
|
const response = await adminApiClient.delete(`/api/admin/users/${userId}`)
|
|
return response.data
|
|
},
|
|
}
|