gitscope
https://dev.kronoz.win/r/marzneshin.git
dashboard/src/modules/services/api/service-inbounds.query.ts · v0.6.4
Source
1 db68a58 Dawsh 2y ago import { useQuery } from "@tanstack/react-query";
2 d636f3f Dawsh 2y ago import { fetch } from "@marzneshin/common/utils";
3 d636f3f Dawsh 2y ago import { InboundType } from "@marzneshin/modules/inbounds";
4 7738ec1 Mardin 2y ago import {
5 7738ec1 Mardin 2y ago FetchEntityReturn,
6 7738ec1 Mardin 2y ago SelectableEntityQueryKeyType
7 7389ad0 Mardin 2y ago } from "@marzneshin/libs/entity-table";
8 db68a58 Dawsh 2y ago
9 db68a58 Dawsh 2y ago interface FetchServiceInboundsType {
10 db68a58 Dawsh 2y ago queryKey: [string, number, number, number]
11 db68a58 Dawsh 2y ago }
12 db68a58 Dawsh 2y ago
13 db68a58 Dawsh 2y ago interface UseServiceInboundsQueryProps {
14 db68a58 Dawsh 2y ago serviceId: number;
15 db68a58 Dawsh 2y ago page?: number;
16 db68a58 Dawsh 2y ago size?: number;
17 db68a58 Dawsh 2y ago }
18 db68a58 Dawsh 2y ago
19 db68a58 Dawsh 2y ago export async function fetchServiceInbounds({
20 db68a58 Dawsh 2y ago queryKey
21 db68a58 Dawsh 2y ago }: FetchServiceInboundsType): Promise<InboundType[]> {
22 db68a58 Dawsh 2y ago return fetch(`/services/${queryKey[1]}/inbounds`, {
23 db68a58 Dawsh 2y ago query: {
24 db68a58 Dawsh 2y ago page: queryKey[2],
25 db68a58 Dawsh 2y ago size: queryKey[3]
26 db68a58 Dawsh 2y ago }
27 db68a58 Dawsh 2y ago }).then((result) => {
28 db68a58 Dawsh 2y ago return result.items;
29 db68a58 Dawsh 2y ago });
30 db68a58 Dawsh 2y ago }
31 db68a58 Dawsh 2y ago
32 7738ec1 Mardin 2y ago
33 7738ec1 Mardin 2y ago export async function fetchSelectableServiceInbounds({ queryKey }: SelectableEntityQueryKeyType): FetchEntityReturn<InboundType> {
34 7738ec1 Mardin 2y ago const pagination = queryKey[3];
35 7738ec1 Mardin 2y ago const primaryFilter = queryKey[4];
36 7738ec1 Mardin 2y ago const filters = queryKey[6].filters;
37 7738ec1 Mardin 2y ago return fetch(`/inbounds`, {
38 7738ec1 Mardin 2y ago query: {
39 7738ec1 Mardin 2y ago ...pagination,
40 7738ec1 Mardin 2y ago ...filters,
41 7738ec1 Mardin 2y ago tag: primaryFilter,
42 7738ec1 Mardin 2y ago descending: queryKey[5].desc,
43 7738ec1 Mardin 2y ago order_by: queryKey[5].sortBy,
44 7738ec1 Mardin 2y ago }
45 7738ec1 Mardin 2y ago }).then((result) => {
46 7738ec1 Mardin 2y ago return {
47 7738ec1 Mardin 2y ago entities: result.items,
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 4708fcb Dawsh 2y ago const ServicesQueryFetchKey = "services";
54 db68a58 Dawsh 2y ago
55 db68a58 Dawsh 2y ago export const useInboundsServiceQuery = ({
56 db68a58 Dawsh 2y ago serviceId, page = 1, size = 50
57 db68a58 Dawsh 2y ago }: UseServiceInboundsQueryProps) => {
58 db68a58 Dawsh 2y ago return useQuery({
59 db68a58 Dawsh 2y ago queryKey: [ServicesQueryFetchKey, serviceId, page, size],
60 db68a58 Dawsh 2y ago queryFn: fetchServiceInbounds,
61 db68a58 Dawsh 2y ago initialData: []
62 db68a58 Dawsh 2y ago })
63 db68a58 Dawsh 2y ago }