Files
pipely/web/src/api/users/index.ts
T

60 lines
1.4 KiB
TypeScript
Raw Normal View History

import WebClient from "@/shared/web-client"
export interface User {
id: string
username: string
role: "admin" | "user"
createdAt: string
updatedAt: string
}
export interface CreateUserRequest {
username: string
password: string
role: "admin" | "user"
}
export interface UpdateUserRequest {
username?: string
password?: string
role?: "admin" | "user"
}
export interface UsersResponse {
data: User[]
total: number
page: number
pageSize: number
}
export interface UsersQuery {
page?: number
pageSize?: number
}
export async function getUsers(query?: UsersQuery): Promise<UsersResponse> {
const params = new URLSearchParams()
if (query?.page) params.append("page", query.page.toString())
if (query?.pageSize) params.append("pageSize", query.pageSize.toString())
const queryString = params.toString()
const { data } = await WebClient.get<UsersResponse>(
`/users${queryString ? `?${queryString}` : ""}`
)
return data
}
export async function createUser(request: CreateUserRequest): Promise<User> {
const { data } = await WebClient.post<User>("/users", request)
return data
}
export async function updateUser(id: string, request: UpdateUserRequest): Promise<User> {
const { data } = await WebClient.put<User>(`/users/${id}`, request)
return data
}
export async function deleteUser(id: string): Promise<void> {
await WebClient.delete<void>(`/users/${id}`)
}