import { ConnectedAircraft, PositionLog, Prisma, Station } from "@repo/db"; import axios from "axios"; import { serverApi } from "_helpers/axios"; import { checkSimulatorConnected } from "@repo/shared-components"; export const getConnectedAircraftsAPI = async () => { const res = await axios.get<(ConnectedAircraft & { Station: Station })[]>("/api/aircrafts"); // return only connected aircrafts if (res.status !== 200) { throw new Error("Failed to fetch stations"); } return res.data.filter((a) => checkSimulatorConnected(a)); }; export const getAircraftsAPI = async (filter?: Prisma.ConnectedAircraftWhereInput) => { const res = await axios.get<(ConnectedAircraft & { Station: Station })[]>("/api/aircrafts", { params: { filter: JSON.stringify(filter) }, }); if (res.status !== 200) { throw new Error("Failed to fetch stations"); } return res.data; }; export const editConnectedAircraftAPI = async ( id: number, mission: Prisma.ConnectedAircraftUpdateInput, ) => { const respone = await serverApi.patch(`/aircrafts/${id}`, mission); return respone.data; }; export const getConnectedAircraftPositionLogAPI = async ({ id }: { id: number }) => { const res = await axios.get("/api/aircrafts/positionlog", { params: { connectedAircraftId: id }, }); if (res.status !== 200) { throw new Error("Failed to fetch aircraft position log"); } return res.data; }; export const kickAircraftAPI = async ({ id, bann, reason, until = null, }: { id: number; bann?: boolean; reason: string; until?: Date | null; }) => { const res = await serverApi.delete(`/aircrafts/${id}`, { data: { bann, reason, until }, }); if (res.status != 204) { throw new Error("Failed to kick aircraft"); } return res.data; };