gitscope
← marzneshin / v0.7.1 / dashboard/src/modules/services/api/service-users.query.ts
https://dev.kronoz.win/r/marzneshin.git
dashboard/src/modules/services/api/service-users.query.ts · TypeScript
Blame Raw
 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}