47 lines
1.1 KiB
TypeScript
47 lines
1.1 KiB
TypeScript
import { api } from '../index';
|
|
import type { User } from '../types';
|
|
|
|
export const adminApi = api.injectEndpoints({
|
|
endpoints: (build) => ({
|
|
getUsers: build.query<User[], void>({
|
|
query: () => '/admin/users',
|
|
providesTags: ['User'],
|
|
}),
|
|
createUser: build.mutation<
|
|
User,
|
|
{
|
|
username: string;
|
|
password: string;
|
|
email?: string;
|
|
role: 'admin' | 'user';
|
|
}
|
|
>({
|
|
query: (body) => ({ url: '/admin/users', method: 'POST', body }),
|
|
invalidatesTags: ['User'],
|
|
}),
|
|
updateUser: build.mutation<
|
|
User,
|
|
{ id: string; role?: 'admin' | 'user'; email?: string }
|
|
>({
|
|
query: ({ id, ...body }) => ({
|
|
url: `/admin/users/${id}`,
|
|
method: 'PATCH',
|
|
body,
|
|
}),
|
|
invalidatesTags: ['User'],
|
|
}),
|
|
deleteUser: build.mutation<void, string>({
|
|
query: (id) => ({ url: `/admin/users/${id}`, method: 'DELETE' }),
|
|
invalidatesTags: ['User'],
|
|
}),
|
|
}),
|
|
overrideExisting: false,
|
|
});
|
|
|
|
export const {
|
|
useGetUsersQuery,
|
|
useCreateUserMutation,
|
|
useUpdateUserMutation,
|
|
useDeleteUserMutation,
|
|
} = adminApi;
|