gitscope
https://dev.kronoz.win/r/marzneshin.git
dashboard/src/modules/services/api/services.query.ts · v0.6.4
Source
1 d636f3f Dawsh 2y ago import { fetch } from "@marzneshin/common/utils";
2 3b7feef Mrdn 2y ago import { ServiceType } from "../types";
3 578311c Mrdn 2y ago import {
4 578311c Mrdn 2y ago EntityQueryKeyType,
5 7738ec1 Mardin 2y ago SelectableEntityQueryKeyType,
6 578311c Mrdn 2y ago FetchEntityReturn,
7 578311c Mrdn 2y ago UseEntityQueryProps
8 7389ad0 Mardin 2y ago } from "@marzneshin/libs/entity-table";
9 578311c Mrdn 2y ago import { useQuery } from "@tanstack/react-query";
10 3b7feef Mrdn 2y ago
11 578311c Mrdn 2y ago export async function fetchServices({ queryKey }: EntityQueryKeyType): FetchEntityReturn<ServiceType> {
12 65bbe9d Mardin 2y ago const pagination = queryKey[1];
13 65bbe9d Mardin 2y ago const primaryFilter = queryKey[2];
14 65bbe9d Mardin 2y ago const filters = queryKey[4].filters;
15 db68a58 Dawsh 2y ago return fetch(`/services`, {
16 db68a58 Dawsh 2y ago query: {
17 65bbe9d Mardin 2y ago ...pagination,
18 65bbe9d Mardin 2y ago ...filters,
19 65bbe9d Mardin 2y ago name: primaryFilter,
20 65bbe9d Mardin 2y ago descending: queryKey[3].desc,
21 65bbe9d Mardin 2y ago order_by: queryKey[3].sortBy,
22 db68a58 Dawsh 2y ago }
23 db68a58 Dawsh 2y ago }).then((result) => {
24 db68a58 Dawsh 2y ago const services: ServiceType[] = result.items;
25 578311c Mrdn 2y ago return {
26 7738ec1 Mardin 2y ago entities: services,
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 7738ec1 Mardin 2y ago export async function fetchUserServices({ queryKey }: SelectableEntityQueryKeyType): FetchEntityReturn<ServiceType> {
33 7738ec1 Mardin 2y ago const pagination = queryKey[3];
34 7738ec1 Mardin 2y ago const primaryFilter = queryKey[4];
35 7738ec1 Mardin 2y ago const filters = queryKey[6].filters;
36 7738ec1 Mardin 2y ago return fetch(`/services`, {
37 7738ec1 Mardin 2y ago query: {
38 7738ec1 Mardin 2y ago ...pagination,
39 7738ec1 Mardin 2y ago ...filters,
40 7738ec1 Mardin 2y ago name: primaryFilter,
41 7738ec1 Mardin 2y ago descending: queryKey[5].desc,
42 7738ec1 Mardin 2y ago order_by: queryKey[5].sortBy,
43 7738ec1 Mardin 2y ago }
44 7738ec1 Mardin 2y ago }).then((result) => {
45 7738ec1 Mardin 2y ago const services: ServiceType[] = result.items;
46 7738ec1 Mardin 2y ago return {
47 7738ec1 Mardin 2y ago entities: services,
48 7738ec1 Mardin 2y ago pageCount: result.pages
49 7738ec1 Mardin 2y ago };
50 7738ec1 Mardin 2y ago });
51 7738ec1 Mardin 2y ago }
52 7738ec1 Mardin 2y ago
53 7738ec1 Mardin 2y ago
54 3b7feef Mrdn 2y ago export const ServicesQueryFetchKey = "services";
55 3b7feef Mrdn 2y ago
56 65bbe9d Mardin 2y ago export const useServicesQuery = ({
57 65bbe9d Mardin 2y ago page, size, sortBy = "created_at", desc = false, filters = {}
58 65bbe9d Mardin 2y ago }: UseEntityQueryProps) => {
59 3b7feef Mrdn 2y ago return useQuery({
60 65bbe9d Mardin 2y ago queryKey: [ServicesQueryFetchKey, { page, size }, filters?.username ?? "", { sortBy, desc }, { filters }],
61 3b7feef Mrdn 2y ago queryFn: fetchServices,
62 7738ec1 Mardin 2y ago initialData: { entities: [], pageCount: 0 }
63 3b7feef Mrdn 2y ago })
64 3b7feef Mrdn 2y ago }