Files
banu-front/src/services/query/admin-users.js
T
sajjadtalkhabi 8990ceaddd fix: design
2026-05-19 22:53:05 +03:30

62 lines
2.1 KiB
JavaScript

import { cleanFilters } from '@/utils/clean-filters'
import { useMutation, useQuery } from '@tanstack/vue-query'
import {
apiAddAdminUser,
apiChangeAdminUserStatus,
apiDeleteAdminUser,
apiGetAdminRoles,
apiGetAdminUsers,
apiShowAdminUser,
apiUpdateAdminUser,
apiUpdateAdminUserRole,
} from '@/services/api/admin-users'
export const adminUsersKeys = {
all: ['admin', 'users'],
list: (filters, pagination) => ['admin', 'users', 'list', filters, pagination],
detail: (id) => ['admin', 'users', 'detail', id],
roles: () => ['admin', 'users', 'roles'],
}
export const useAdminUsersListQuery = (filtersRef, paginationRef, options = {}) =>
useQuery({
queryKey: ['admin', 'users', 'list', filtersRef, paginationRef],
queryFn: () => apiGetAdminUsers({ ...cleanFilters(filtersRef.value), ...paginationRef.value }),
select: (response) => ({
data: response?.data?.items ?? response?.data ?? [],
meta: response?.data?.meta ?? response?.meta,
}),
...options,
})
export const useAdminUserQuery = (idRef, options = {}) =>
useQuery({
queryKey: ['admin', 'users', 'detail', idRef],
queryFn: () => apiShowAdminUser(idRef.value),
select: (response) => response?.data ?? response,
...options,
})
export const useAdminRolesListQuery = (options = {}) =>
useQuery({
queryKey: adminUsersKeys.roles(),
queryFn: () => apiGetAdminRoles(),
select: (response) => response?.data ?? response,
...options,
})
export const useAddAdminUserMutation = () =>
useMutation({ mutationFn: (payload) => apiAddAdminUser(payload) })
export const useUpdateAdminUserMutation = () =>
useMutation({ mutationFn: ({ id, payload }) => apiUpdateAdminUser(id, payload) })
export const useUpdateAdminUserRoleMutation = () =>
useMutation({ mutationFn: ({ id, payload }) => apiUpdateAdminUserRole(id, payload) })
export const useChangeAdminUserStatusMutation = () =>
useMutation({ mutationFn: ({ id, payload }) => apiChangeAdminUserStatus(id, payload) })
export const useDeleteAdminUserMutation = () =>
useMutation({ mutationFn: (id) => apiDeleteAdminUser(id) })