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