import { cleanFilters } from '@/utils/clean-filters' import { useMutation, useQuery } from '@tanstack/vue-query' import { apiAddAdminUser, apiChangeAdminUserStatus, apiDeleteAdminUser, 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], } 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 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) })