ConvoyPanel/resources/scripts/api/admin/users/getUsers.ts
2023-01-21 04:14:06 +00:00

44 lines
1.1 KiB
TypeScript

import http, { getPaginationSet, PaginatedResult } from '@/api/http'
export interface User {
id: number
name: string
email: string
emailVerifiedAt: Date | null
rootAdmin: boolean
serversCount: number
}
export const rawDataToUser = (data: any): User => ({
id: data.id,
name: data.name,
email: data.email,
emailVerifiedAt: data.email_verified_at ? new Date(data.email_verified_at) : null,
rootAdmin: data.root_admin,
serversCount: data.servers_count,
})
export interface QueryParams {
query?: string
page?: number
perPage?: number
}
export type UserResponse = PaginatedResult<User>
const getUsers = async ({ query, perPage = 50, ...params }: QueryParams): Promise<UserResponse> => {
const { data } = await http.get('/api/admin/users', {
params: {
'filter[*]': query,
'per_page': perPage,
...params,
},
})
return {
items: data.data.map(rawDataToUser),
pagination: getPaginationSet(data.meta.pagination),
}
}
export default getUsers