https://dev.kronoz.win/r/marzneshin.git
1import { useQuery } from "@tanstack/react-query";
2import { fetch } from "@marzneshin/common/utils";
3import { UserType } from "@marzneshin/modules/users";
4import type {
5 DoubleEntityQueryKeyType,
6 UseEntityQueryProps,
7 FetchEntityReturn
8} from "@marzneshin/libs/entity-table";
9
10interface UseServiceUsersQueryProps extends UseEntityQueryProps {
11 serviceId: number;
12}
13
14export async function fetchServiceUsers({ queryKey }: DoubleEntityQueryKeyType): FetchEntityReturn<UserType> {
15 const pagination = queryKey[2];
16 const primaryFilter = queryKey[3];
17 return fetch(`/services/${queryKey[1]}/users`, {
18 query: {
19 ...pagination,
20 username: primaryFilter,
21 }
22 }).then((result) => {
23 return {
24 entities: result.items,
25 pageCount: result.pages,
26 };
27 });
28}
29
30const ServicesQueryFetchKey = "services";
31
32export const useUsersServiceQuery = ({
33 serviceId, page = 1, size = 50
34}: UseServiceUsersQueryProps) => {
35 return useQuery({
36 queryKey: [ServicesQueryFetchKey, serviceId, { page, size }],
37 queryFn: fetchServiceUsers,
38 initialData: { entities: [], pageCount: 0 },
39 })
40}