gitscope
← marzneshin / v0.6.4 / dashboard/src/modules/admins/api/admins.query.ts
https://dev.kronoz.win/r/marzneshin.git
dashboard/src/modules/admins/api/admins.query.ts · TypeScript
Blame Raw
 1import { useQuery } from "@tanstack/react-query";
 2import { fetch } from "@marzneshin/common/utils";
 3import { AdminType } from "@marzneshin/modules/admins";
 4import {
 5    FetchEntityReturn,
 6    UseEntityQueryProps,
 7    EntityQueryKeyType
 8} from "@marzneshin/libs/entity-table";
 9
10export async function fetchAdmins({ queryKey }: EntityQueryKeyType): FetchEntityReturn<AdminType> {
11    const pagination = queryKey[1];
12    const primaryFilter = queryKey[2];
13    const filters = queryKey[4].filters;
14    return fetch(`/admins`, {
15        query: {
16            ...pagination,
17            ...filters,
18            username: primaryFilter,
19            descending: queryKey[3].desc,
20            order_by: queryKey[3].sortBy,
21        }
22    }).then((result) => {
23        return {
24            entities: result.items,
25            pageCount: result.pages
26        };
27    });
28}
29
30export const AdminsQueryFetchKey = "admins";
31
32export const useAdminsQuery = ({
33    page, size, sortBy = "created_at", desc = false, filters = {}
34}: UseEntityQueryProps) => {
35    return useQuery({
36        queryKey: [AdminsQueryFetchKey, { page, size }, filters?.username ?? "", { sortBy, desc }, { filters }],
37        queryFn: fetchAdmins,
38        initialData: { entities: [], pageCount: 0 }
39    })
40}