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