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