45 lines
1.3 KiB
TypeScript
45 lines
1.3 KiB
TypeScript
|
|
import { adminApiClient } from './client'
|
||
|
|
import type { UserDto, PaginatedResponse, PaymentDto } from '@/types/models'
|
||
|
|
|
||
|
|
export const usersApi = {
|
||
|
|
// Get all users with pagination
|
||
|
|
getUsers: async (params?: {
|
||
|
|
page?: number
|
||
|
|
limit?: number
|
||
|
|
ids?: string[]
|
||
|
|
}): Promise<PaginatedResponse<UserDto>> => {
|
||
|
|
const response = await adminApiClient.get('/api/v2/admin/users', {
|
||
|
|
params: {
|
||
|
|
page: params?.page || 1,
|
||
|
|
limit: params?.limit || 20,
|
||
|
|
ids: params?.ids?.join(','),
|
||
|
|
},
|
||
|
|
})
|
||
|
|
return response.data
|
||
|
|
},
|
||
|
|
|
||
|
|
// Get user IDs list
|
||
|
|
getUserIds: async (): Promise<string[]> => {
|
||
|
|
const response = await adminApiClient.get('/api/v2/admin/users/ids')
|
||
|
|
return response.data.ids
|
||
|
|
},
|
||
|
|
|
||
|
|
// Get user purchases
|
||
|
|
getUserPurchases: async (userId: string): Promise<PaymentDto[]> => {
|
||
|
|
const response = await adminApiClient.get(`/api/v2/admin/users/${userId}/purchases`)
|
||
|
|
return response.data.payments
|
||
|
|
},
|
||
|
|
|
||
|
|
// Create or update user
|
||
|
|
upsertUser: async (user: UserDto): Promise<{ result: boolean }> => {
|
||
|
|
const response = await adminApiClient.post('/api/v2/admin/users', user)
|
||
|
|
return response.data
|
||
|
|
},
|
||
|
|
|
||
|
|
// Delete user
|
||
|
|
deleteUser: async (userId: string): Promise<{ result: boolean }> => {
|
||
|
|
const response = await adminApiClient.delete(`/api/v2/admin/users/${userId}`)
|
||
|
|
return response.data
|
||
|
|
},
|
||
|
|
}
|