1import { useQuery } from "@tanstack/react-query";
2import { fetch } from "@marzneshin/utils";
3import { AdminType } from "@marzneshin/modules/admins";
4import {
5 FetchEntityReturn,
6 UseEntityQueryProps,
7 EntityQueryKeyType
8} from "@marzneshin/features/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}