diff --git a/app/api/monitoring/applications/edit_general/route.ts b/app/api/monitoring/applications/edit_general/route.ts new file mode 100644 index 0000000..98a26a8 --- /dev/null +++ b/app/api/monitoring/applications/edit_general/route.ts @@ -0,0 +1,43 @@ +import { NextRequest, NextResponse } from "next/server"; +import prisma from "@/app/prisma"; +import { z } from "zod/v4"; + +const schema = z.object({ + frequency: z.number(), + checksUntilOffline: z.number(), +}) + +export async function POST(request: NextRequest) { + try { + const body = await request.json(); + const { frequency, checksUntilOffline } = schema.parse(body); + + const existingGeneralSettings = await prisma.generalApplicationMonitoringSettings.findFirst({ + where: { + applicationSettings: { + none: {} + } + } + }); + if(!existingGeneralSettings) { + const generalSettings = await prisma.generalApplicationMonitoringSettings.create({ + data: { + frequency, + checksUntilOffline, + }, + }) + return NextResponse.json(generalSettings, { status: 200 }); + } else { + const generalSettings = await prisma.generalApplicationMonitoringSettings.update({ + where: { id: existingGeneralSettings.id }, + data: { frequency, checksUntilOffline }, + }) + return NextResponse.json(generalSettings, { status: 200 }); + } + } catch (error) { + if(error instanceof z.ZodError) { + return NextResponse.json({ error: error.issues[0].message }, { status: 400 }); + } + return NextResponse.json({ error: "Internal server error" }, { status: 500 }); + } +} \ No newline at end of file diff --git a/app/api/monitoring/servers/edit_general/route.ts b/app/api/monitoring/servers/edit_general/route.ts new file mode 100644 index 0000000..b43d407 --- /dev/null +++ b/app/api/monitoring/servers/edit_general/route.ts @@ -0,0 +1,40 @@ +import { NextRequest, NextResponse } from "next/server"; +import prisma from "@/app/prisma"; +import { z } from "zod/v4"; + +const schema = z.object({ + frequency: z.number(), + checksUntilOffline: z.number(), +}) + +export async function POST(request: NextRequest) { + try { + const body = await request.json(); + const { frequency, checksUntilOffline } = schema.parse(body); + + const existingGeneralSettings = await prisma.generalServerMonitoringSettings.findFirst({ + where: { + serverSettings: { + none: {} + } + } + }); + if(!existingGeneralSettings) { + const generalSettings = await prisma.generalServerMonitoringSettings.create({ + data: { frequency, checksUntilOffline }, + }) + return NextResponse.json(generalSettings, { status: 200 }); + } else { + const generalSettings = await prisma.generalServerMonitoringSettings.update({ + where: { id: existingGeneralSettings.id }, + data: { frequency, checksUntilOffline }, + }) + return NextResponse.json(generalSettings, { status: 200 }); + } + } catch (error) { + if(error instanceof z.ZodError) { + return NextResponse.json({ error: error.issues[0].message }, { status: 400 }); + } + return NextResponse.json({ error: "Internal server error" }, { status: 500 }); + } +} \ No newline at end of file