Monitoring Settings api route

This commit is contained in:
headlesdev 2025-05-29 14:28:25 +02:00
parent 89e22e895b
commit 307062b5be
2 changed files with 83 additions and 0 deletions

View File

@ -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 });
}
}

View File

@ -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 });
}
}