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