From cd4db064907281eee8fc2c4a8830d569df6da2d6 Mon Sep 17 00:00:00 2001 From: PxlLoewe <72106766+PxlLoewe@users.noreply.github.com> Date: Sun, 1 Jun 2025 16:03:31 -0700 Subject: [PATCH] added connectedDispatcher Query --- apps/dispatch/app/_querys/connected-user.ts | 22 +++++++----- apps/dispatch/app/api/dispatcher/route.ts | 36 +++++++++++++++++++ .../_components/ConnectedDispatcher.tsx | 8 +++-- 3 files changed, 56 insertions(+), 10 deletions(-) create mode 100644 apps/dispatch/app/api/dispatcher/route.ts diff --git a/apps/dispatch/app/_querys/connected-user.ts b/apps/dispatch/app/_querys/connected-user.ts index 5136ff39..e96de52d 100644 --- a/apps/dispatch/app/_querys/connected-user.ts +++ b/apps/dispatch/app/_querys/connected-user.ts @@ -1,19 +1,25 @@ import { ConnectedAircraft, ConnectedDispatcher, Prisma } from "@repo/db"; import axios from "axios"; -export const getConnectedUserAPI = async ( - filter?: Prisma.KeywordWhereInput, -) => { +export const getConnectedUserAPI = async () => { const res = await axios.get<(ConnectedAircraft | ConnectedDispatcher)[]>( "/api/connected-user", - { - params: { - filter: JSON.stringify(filter), - }, - }, + {}, ); if (res.status !== 200) { throw new Error("Failed to fetch Connected User"); } return res.data; }; + +export const getConnectedDispatcherAPI = async (filter?: Prisma.ConnectedDispatcherWhereInput) => { + const res = await axios.get("/api/dispatcher", { + params: { + filter: JSON.stringify(filter), + }, + }); + if (res.status !== 200) { + throw new Error("Failed to fetch Connected Dispatcher"); + } + return res.data; +}; diff --git a/apps/dispatch/app/api/dispatcher/route.ts b/apps/dispatch/app/api/dispatcher/route.ts new file mode 100644 index 00000000..68db178c --- /dev/null +++ b/apps/dispatch/app/api/dispatcher/route.ts @@ -0,0 +1,36 @@ +import { NextResponse } from "next/server"; +import { getPublicUser, Prisma, prisma } from "@repo/db"; + +export async function GET(request: Request): Promise { + try { + const filter = JSON.parse( + new URL(request.url).searchParams.get("filter") || "{}", + ) as Prisma.ConnectedDispatcherWhereInput; + + const connectedDispatcher = await prisma.connectedDispatcher.findMany({ + where: { + logoutTime: null, + ...filter, // Ensure filter is parsed correctly + }, + include: { + user: true, + }, + }); + + return NextResponse.json( + connectedDispatcher.map((d) => { + return { + ...d, + user: undefined, + publicUser: getPublicUser(d.user), + }; + }), + { + status: 200, + }, + ); + } catch (error) { + console.error(error); + return NextResponse.json({ error: "Failed to fetch Dispatchers" }, { status: 500 }); + } +} diff --git a/apps/dispatch/app/tracker/_components/ConnectedDispatcher.tsx b/apps/dispatch/app/tracker/_components/ConnectedDispatcher.tsx index 48529651..5803b065 100644 --- a/apps/dispatch/app/tracker/_components/ConnectedDispatcher.tsx +++ b/apps/dispatch/app/tracker/_components/ConnectedDispatcher.tsx @@ -1,11 +1,15 @@ import { useQuery } from "@tanstack/react-query"; +import { getConnectedDispatcherAPI } from "_querys/connected-user"; import { useState } from "react"; export const ConnectedDispatcher = () => { const [open, setOpen] = useState(false); - const {} = useQuery({ - queryKey: [""], + const { data: dispatcher } = useQuery({ + queryKey: ["dispatcher"], + queryFn: () => getConnectedDispatcherAPI(), + refetchInterval: 10000, }); + console.log("ConnectedDispatcher", dispatcher); return (