diff --git a/app/api/monitoring/applications/edit_general/route.ts b/app/api/monitoring/applications/edit_general/route.ts
index 98a26a8..2bf025d 100644
--- a/app/api/monitoring/applications/edit_general/route.ts
+++ b/app/api/monitoring/applications/edit_general/route.ts
@@ -3,8 +3,8 @@ import prisma from "@/app/prisma";
import { z } from "zod/v4";
const schema = z.object({
- frequency: z.number(),
- checksUntilOffline: z.number(),
+ frequency: z.number().min(1, { message: "Frequency must be greater than 0" }).max(1000, { message: "Frequency must be less than 1000" }),
+ checksUntilOffline: z.number().min(1, { message: "Checks until offline must be greater than 0" }).max(1000, { message: "Checks until offline must be less than 1000" }),
})
export async function POST(request: NextRequest) {
diff --git a/app/api/monitoring/applications/get_general/route.ts b/app/api/monitoring/applications/get_general/route.ts
new file mode 100644
index 0000000..e395cd2
--- /dev/null
+++ b/app/api/monitoring/applications/get_general/route.ts
@@ -0,0 +1,18 @@
+import { NextRequest, NextResponse } from "next/server";
+import prisma from "@/app/prisma";
+
+
+export async function GET(request: NextRequest) {
+ try {
+ const generalSettings = await prisma.generalApplicationMonitoringSettings.findFirst({
+ where: {
+ applicationSettings: {
+ none: {}
+ }
+ }
+ });
+ return NextResponse.json(generalSettings, { status: 200 });
+ } catch (error) {
+ return NextResponse.json({ error: "Failed to get general settings" }, { 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
index b43d407..08ac0b2 100644
--- a/app/api/monitoring/servers/edit_general/route.ts
+++ b/app/api/monitoring/servers/edit_general/route.ts
@@ -3,8 +3,8 @@ import prisma from "@/app/prisma";
import { z } from "zod/v4";
const schema = z.object({
- frequency: z.number(),
- checksUntilOffline: z.number(),
+ frequency: z.number().min(1, { message: "Frequency must be greater than 0" }).max(1000, { message: "Frequency must be less than 1000" }),
+ checksUntilOffline: z.number().min(1, { message: "Checks until offline must be greater than 0" }).max(1000, { message: "Checks until offline must be less than 1000" }),
})
export async function POST(request: NextRequest) {
diff --git a/app/api/monitoring/servers/get_general/route.ts b/app/api/monitoring/servers/get_general/route.ts
new file mode 100644
index 0000000..f4f087a
--- /dev/null
+++ b/app/api/monitoring/servers/get_general/route.ts
@@ -0,0 +1,18 @@
+import { NextRequest, NextResponse } from "next/server";
+import prisma from "@/app/prisma";
+
+export async function GET(request: NextRequest) {
+ try {
+ const generalSettings = await prisma.generalServerMonitoringSettings.findFirst({
+ where: {
+ serverSettings: {
+ none: {}
+ }
+ }
+ });
+
+ return NextResponse.json(generalSettings, { status: 200 });
+ } catch (error) {
+ return NextResponse.json({ error: "Failed to get general settings" }, { status: 500 });
+ }
+}
\ No newline at end of file
diff --git a/components/cards/settings/MonitoringSettings.tsx b/components/cards/settings/MonitoringSettings.tsx
index 1bfc7a8..3a46021 100644
--- a/components/cards/settings/MonitoringSettings.tsx
+++ b/components/cards/settings/MonitoringSettings.tsx
@@ -1,8 +1,8 @@
"use client"
import { useEffect, useState } from "react"
-import useNotifications from "@/hooks/useNotifications"
-import { Check, CircleHelp, Copy, Server, Smartphone } from "lucide-react"
+import useMonitoring from "@/hooks/useMonitoring"
+import { Check, CircleHelp, Copy, Server, Settings, Smartphone } from "lucide-react"
interface MonitoringSettingsProps {
onError: (message: string) => void
@@ -10,5 +10,178 @@ interface MonitoringSettingsProps {
}
export const MonitoringSettings = ({ onError, onSuccess }: MonitoringSettingsProps) => {
- return
MonitoringSettings
+ const { getGeneralApplicationMonitoringSettings, getGeneralServerMonitoringSettings, editGeneralApplicationMonitoringSettings, editGeneralServerMonitoringSettings } = useMonitoring();
+ const [generalApplicationMonitoringSettings, setGeneralApplicationMonitoringSettings] = useState(null);
+ const [generalServerMonitoringSettings, setGeneralServerMonitoringSettings] = useState(null);
+
+ const fetchGeneralMonitoringSettings = async () => {
+ const generalApplicationMonitoringSettings = await getGeneralApplicationMonitoringSettings();
+ const generalServerMonitoringSettings = await getGeneralServerMonitoringSettings();
+ if (typeof generalApplicationMonitoringSettings === 'string' || typeof generalServerMonitoringSettings === 'string') {
+ onError(typeof generalApplicationMonitoringSettings === 'string' ? generalApplicationMonitoringSettings : generalServerMonitoringSettings as string);
+ return;
+ }
+ setGeneralApplicationMonitoringSettings(
+ generalApplicationMonitoringSettings || {
+ frequency: 10,
+ checksUntilOffline: 1,
+ }
+ );
+ setGeneralServerMonitoringSettings(
+ generalServerMonitoringSettings || {
+ frequency: 10,
+ checksUntilOffline: 1,
+ }
+ );
+ }
+
+ useEffect(() => {
+ fetchGeneralMonitoringSettings();
+ }, []);
+
+ return(
+
+
+
+
+
+
+
+
Monitoring Settings
+
Manage your monitoring settings
+
+
+
+
+
+ {/* Server Monitoring Section */}
+
+
+
+
+
+
+
+
Server Monitoring
+
Configure server monitoring frequency and thresholds
+
+
+
+
+
+
+
+ {/* Application Monitoring Section */}
+
+
+
+
+
+
+
+
Application Monitoring
+
Configure application monitoring frequency and thresholds
+
+
+
+
+
+
+
+ {/* Save Button */}
+
+
+
+
+
+ )
}
\ No newline at end of file
diff --git a/hooks/useMonitoring.ts b/hooks/useMonitoring.ts
new file mode 100644
index 0000000..a6e4793
--- /dev/null
+++ b/hooks/useMonitoring.ts
@@ -0,0 +1,62 @@
+import { useState, useEffect, useCallback } from "react";
+import axios from "axios";
+
+interface MonitoringSettings {
+ frequency: number;
+ checksUntilOffline: number;
+}
+
+
+const useMonitoring = () => {
+ const getGeneralApplicationMonitoringSettings = (): Promise | string => {
+ return axios.get('/api/monitoring/applications/get_general')
+ .then((response) => {
+ if(response.data) {
+ return response.data
+ } else {
+ return
+ }
+ })
+ .catch((error) => {
+ return error.response.data.error
+ });
+ }
+
+ const getGeneralServerMonitoringSettings = (): Promise | string => {
+ return axios.get('/api/monitoring/servers/get_general')
+ .then((response) => {
+ if(response.data) {
+ return response.data
+ } else {
+ return
+ }
+ })
+ .catch((error) => {
+ return error.response.data.error
+ });
+ }
+
+ const editGeneralApplicationMonitoringSettings = (settings: MonitoringSettings): Promise | string => {
+ return axios.post('/api/monitoring/applications/edit_general', settings)
+ .then((response) => {
+ return response.data
+ })
+ .catch((error) => {
+ return error.response.data.error
+ });
+ }
+
+ const editGeneralServerMonitoringSettings = (settings: MonitoringSettings): Promise | string => {
+ return axios.post('/api/monitoring/servers/edit_general', settings)
+ .then((response) => {
+ return response.data
+ })
+ .catch((error) => {
+ return error.response.data.error
+ });
+ }
+
+ return { getGeneralApplicationMonitoringSettings, getGeneralServerMonitoringSettings, editGeneralApplicationMonitoringSettings, editGeneralServerMonitoringSettings };
+};
+
+export default useMonitoring;
diff --git a/prisma/generated/prisma/edge.js b/prisma/generated/prisma/edge.js
index 639fdfb..f6d3b5c 100644
--- a/prisma/generated/prisma/edge.js
+++ b/prisma/generated/prisma/edge.js
@@ -296,7 +296,7 @@ const config = {
"value": "prisma-client-js"
},
"output": {
- "value": "/home/damian/corecontrol/prisma/generated/prisma",
+ "value": "C:\\Users\\damia\\Desktop\\corecontrol\\CoreControl\\prisma\\generated\\prisma",
"fromEnvVar": null
},
"config": {
@@ -305,12 +305,16 @@ const config = {
"binaryTargets": [
{
"fromEnvVar": null,
- "value": "rhel-openssl-3.0.x",
+ "value": "windows",
"native": true
+ },
+ {
+ "fromEnvVar": null,
+ "value": "windows"
}
],
"previewFeatures": [],
- "sourceFilePath": "/home/damian/corecontrol/prisma/schema.prisma",
+ "sourceFilePath": "C:\\Users\\damia\\Desktop\\corecontrol\\CoreControl\\prisma\\schema.prisma",
"isCustomOutput": true
},
"relativeEnvPaths": {
@@ -332,8 +336,8 @@ const config = {
}
}
},
- "inlineSchema": "// This is your Prisma schema file,\n// learn more about it in the docs: https://pris.ly/d/prisma-schema\n\n// Looking for ways to speed up your queries, or scale easily with your serverless or edge functions?\n// Try Prisma Accelerate: https://pris.ly/cli/accelerate-init\n\ngenerator client {\n provider = \"prisma-client-js\"\n output = \"./generated/prisma\"\n}\n\ndatasource db {\n provider = \"postgresql\"\n url = env(\"DATABASE_URL\")\n}\n\nmodel User {\n id String @id @default(cuid())\n username String @unique\n name String\n email String @unique\n password String\n lastLogin DateTime?\n createdAt DateTime @default(now())\n updatedAt DateTime @updatedAt\n\n @@map(\"users\")\n}\n\nmodel Site {\n id Int @id @default(autoincrement())\n name String\n description String?\n networks Network[]\n\n @@map(\"sites\")\n}\n\nmodel Network {\n id Int @id @default(autoincrement())\n site Site @relation(fields: [siteId], references: [id], onDelete: Cascade)\n siteId Int\n name String\n ipv4Subnet String?\n ipv6Subnet String?\n gateway String?\n servers Server[]\n\n @@map(\"networks\")\n}\n\nmodel Server {\n id Int @id @default(autoincrement())\n network Network @relation(fields: [networkId], references: [id], onDelete: Cascade)\n networkId Int\n name String\n description String?\n icon String?\n ipv4Address String?\n osDetails String?\n cpuDetails String?\n gpuDetails String?\n memoryDetails String?\n storageDetails String?\n managementUrl String?\n monitoring Boolean @default(false)\n monitoringUrl String?\n monitoringData ServerMonitoring[]\n applications Application[]\n monitoringSettings ServerMonitoringSettings[]\n\n @@map(\"servers\")\n}\n\nmodel ServerMonitoring {\n id Int @id @default(autoincrement())\n server Server @relation(fields: [serverId], references: [id], onDelete: Cascade)\n serverId Int\n cpuPercentUsage Float\n gpuPercentUsage Float\n memoryUsage Float\n memoryPercentUsage Float\n diskUsage Float\n diskPercentUsage Float\n temperature Float\n online Boolean\n uptimeSeconds Int\n timestamp DateTime @default(now())\n\n @@index([serverId, timestamp])\n @@index([online])\n @@map(\"server_monitoring\")\n}\n\nmodel Application {\n id Int @id @default(autoincrement())\n server Server @relation(fields: [serverId], references: [id], onDelete: Cascade)\n serverId Int\n name String\n description String?\n icon String?\n url String?\n monitoring Boolean @default(false)\n monitoringData ApplicationMonitoring[]\n monitoringSettings ApplicationMonitoringSettings[]\n\n @@map(\"applications\")\n}\n\nmodel ApplicationMonitoring {\n id Int @id @default(autoincrement())\n application Application @relation(fields: [applicationId], references: [id], onDelete: Cascade)\n applicationId Int\n online Boolean\n latency Float\n timestamp DateTime @default(now())\n\n @@index([applicationId, timestamp])\n @@index([online])\n @@map(\"application_monitoring\")\n}\n\nmodel ServerMonitoringNotification {\n id Int @id @default(autoincrement())\n enabled Boolean @default(false)\n statusChange Boolean\n cpuLimit Float\n gpuLimit Float\n memoryLimit Float\n diskLimit Float\n temperatureLimit Float\n notificationTextStatus String\n notificationTextCpu String\n notificationTextGpu String\n notificationTextMemory String\n notificationTextDisk String\n notificationTextTemperature String\n notificationCpu Boolean\n notificationGpu Boolean\n notificationMemory Boolean\n notificationDisk Boolean\n notificationTemperature Boolean\n\n @@map(\"server_monitoring_notifications\")\n}\n\nmodel ApplicationMonitoringNotification {\n id Int @id @default(autoincrement())\n enabled Boolean @default(false)\n statusChange Boolean\n latencyLimit Float\n notificationTextStatus String\n notificationTextLatency String\n notificationLatency Boolean\n\n @@map(\"application_monitoring_notifications\")\n}\n\nmodel NotificationProvider {\n id Int @id @default(autoincrement())\n name String\n type NotificationType\n config Json\n tests NotificationTest[]\n\n @@map(\"notification_providers\")\n}\n\nmodel NotificationTest {\n id Int @id @default(autoincrement())\n notificationProvider NotificationProvider @relation(fields: [notificationProviderId], references: [id], onDelete: Cascade)\n notificationProviderId Int\n sent Boolean @default(false)\n success Boolean?\n\n @@map(\"notification_tests\")\n}\n\nenum NotificationType {\n TELEGRAM\n NTFY\n SMTP\n}\n\nmodel GeneralServerMonitoringSettings {\n id Int @id @default(autoincrement())\n frequency Int\n checksUntilOffline Int\n serverSettings ServerMonitoringSettings[]\n\n @@map(\"general_server_monitoring_settings\")\n}\n\nmodel GeneralApplicationMonitoringSettings {\n id Int @id @default(autoincrement())\n frequency Int\n checksUntilOffline Int\n applicationSettings ApplicationMonitoringSettings[]\n\n @@map(\"general_application_monitoring_settings\")\n}\n\nmodel ServerMonitoringSettings {\n id Int @id @default(autoincrement())\n server Server @relation(fields: [serverId], references: [id], onDelete: Cascade)\n serverId Int\n generalSettings GeneralServerMonitoringSettings @relation(fields: [generalSettingsId], references: [id], onDelete: Cascade)\n generalSettingsId Int\n}\n\nmodel ApplicationMonitoringSettings {\n id Int @id @default(autoincrement())\n application Application @relation(fields: [applicationId], references: [id], onDelete: Cascade)\n applicationId Int\n generalSettings GeneralApplicationMonitoringSettings @relation(fields: [generalSettingsId], references: [id], onDelete: Cascade)\n generalSettingsId Int\n}\n",
- "inlineSchemaHash": "e9ff6c55133a77b9162090ed7570d20b4726b6edc153a72a1ba297e0335fd97a",
+ "inlineSchema": "// This is your Prisma schema file,\n// learn more about it in the docs: https://pris.ly/d/prisma-schema\n\n// Looking for ways to speed up your queries, or scale easily with your serverless or edge functions?\n// Try Prisma Accelerate: https://pris.ly/cli/accelerate-init\n\ngenerator client {\n provider = \"prisma-client-js\"\n output = \"./generated/prisma\"\n binaryTargets = [\"native\", \"windows\"]\n}\n\ndatasource db {\n provider = \"postgresql\"\n url = env(\"DATABASE_URL\")\n}\n\nmodel User {\n id String @id @default(cuid())\n username String @unique\n name String\n email String @unique\n password String\n lastLogin DateTime?\n createdAt DateTime @default(now())\n updatedAt DateTime @updatedAt\n\n @@map(\"users\")\n}\n\nmodel Site {\n id Int @id @default(autoincrement())\n name String\n description String?\n networks Network[]\n\n @@map(\"sites\")\n}\n\nmodel Network {\n id Int @id @default(autoincrement())\n site Site @relation(fields: [siteId], references: [id], onDelete: Cascade)\n siteId Int\n name String\n ipv4Subnet String?\n ipv6Subnet String?\n gateway String?\n servers Server[]\n\n @@map(\"networks\")\n}\n\nmodel Server {\n id Int @id @default(autoincrement())\n network Network @relation(fields: [networkId], references: [id], onDelete: Cascade)\n networkId Int\n name String\n description String?\n icon String?\n ipv4Address String?\n osDetails String?\n cpuDetails String?\n gpuDetails String?\n memoryDetails String?\n storageDetails String?\n managementUrl String?\n monitoring Boolean @default(false)\n monitoringUrl String?\n monitoringData ServerMonitoring[]\n applications Application[]\n monitoringSettings ServerMonitoringSettings[]\n\n @@map(\"servers\")\n}\n\nmodel ServerMonitoring {\n id Int @id @default(autoincrement())\n server Server @relation(fields: [serverId], references: [id], onDelete: Cascade)\n serverId Int\n cpuPercentUsage Float\n gpuPercentUsage Float\n memoryUsage Float\n memoryPercentUsage Float\n diskUsage Float\n diskPercentUsage Float\n temperature Float\n online Boolean\n uptimeSeconds Int\n timestamp DateTime @default(now())\n\n @@index([serverId, timestamp])\n @@index([online])\n @@map(\"server_monitoring\")\n}\n\nmodel Application {\n id Int @id @default(autoincrement())\n server Server @relation(fields: [serverId], references: [id], onDelete: Cascade)\n serverId Int\n name String\n description String?\n icon String?\n url String?\n monitoring Boolean @default(false)\n monitoringData ApplicationMonitoring[]\n monitoringSettings ApplicationMonitoringSettings[]\n\n @@map(\"applications\")\n}\n\nmodel ApplicationMonitoring {\n id Int @id @default(autoincrement())\n application Application @relation(fields: [applicationId], references: [id], onDelete: Cascade)\n applicationId Int\n online Boolean\n latency Float\n timestamp DateTime @default(now())\n\n @@index([applicationId, timestamp])\n @@index([online])\n @@map(\"application_monitoring\")\n}\n\nmodel ServerMonitoringNotification {\n id Int @id @default(autoincrement())\n enabled Boolean @default(false)\n statusChange Boolean\n cpuLimit Float\n gpuLimit Float\n memoryLimit Float\n diskLimit Float\n temperatureLimit Float\n notificationTextStatus String\n notificationTextCpu String\n notificationTextGpu String\n notificationTextMemory String\n notificationTextDisk String\n notificationTextTemperature String\n notificationCpu Boolean\n notificationGpu Boolean\n notificationMemory Boolean\n notificationDisk Boolean\n notificationTemperature Boolean\n\n @@map(\"server_monitoring_notifications\")\n}\n\nmodel ApplicationMonitoringNotification {\n id Int @id @default(autoincrement())\n enabled Boolean @default(false)\n statusChange Boolean\n latencyLimit Float\n notificationTextStatus String\n notificationTextLatency String\n notificationLatency Boolean\n\n @@map(\"application_monitoring_notifications\")\n}\n\nmodel NotificationProvider {\n id Int @id @default(autoincrement())\n name String\n type NotificationType\n config Json\n tests NotificationTest[]\n\n @@map(\"notification_providers\")\n}\n\nmodel NotificationTest {\n id Int @id @default(autoincrement())\n notificationProvider NotificationProvider @relation(fields: [notificationProviderId], references: [id], onDelete: Cascade)\n notificationProviderId Int\n sent Boolean @default(false)\n success Boolean?\n\n @@map(\"notification_tests\")\n}\n\nenum NotificationType {\n TELEGRAM\n NTFY\n SMTP\n}\n\nmodel GeneralServerMonitoringSettings {\n id Int @id @default(autoincrement())\n frequency Int\n checksUntilOffline Int\n serverSettings ServerMonitoringSettings[]\n\n @@map(\"general_server_monitoring_settings\")\n}\n\nmodel GeneralApplicationMonitoringSettings {\n id Int @id @default(autoincrement())\n frequency Int\n checksUntilOffline Int\n applicationSettings ApplicationMonitoringSettings[]\n\n @@map(\"general_application_monitoring_settings\")\n}\n\nmodel ServerMonitoringSettings {\n id Int @id @default(autoincrement())\n server Server @relation(fields: [serverId], references: [id], onDelete: Cascade)\n serverId Int\n generalSettings GeneralServerMonitoringSettings @relation(fields: [generalSettingsId], references: [id], onDelete: Cascade)\n generalSettingsId Int\n}\n\nmodel ApplicationMonitoringSettings {\n id Int @id @default(autoincrement())\n application Application @relation(fields: [applicationId], references: [id], onDelete: Cascade)\n applicationId Int\n generalSettings GeneralApplicationMonitoringSettings @relation(fields: [generalSettingsId], references: [id], onDelete: Cascade)\n generalSettingsId Int\n}\n",
+ "inlineSchemaHash": "4a8fce365565e461319ce1c32ff87b1900e08f5ec28680ad5fa125c677eb76d9",
"copyEngine": true
}
config.dirname = '/'
diff --git a/prisma/generated/prisma/index.js b/prisma/generated/prisma/index.js
index 05630d6..dc89351 100644
--- a/prisma/generated/prisma/index.js
+++ b/prisma/generated/prisma/index.js
@@ -297,7 +297,7 @@ const config = {
"value": "prisma-client-js"
},
"output": {
- "value": "/home/damian/corecontrol/prisma/generated/prisma",
+ "value": "C:\\Users\\damia\\Desktop\\corecontrol\\CoreControl\\prisma\\generated\\prisma",
"fromEnvVar": null
},
"config": {
@@ -306,12 +306,16 @@ const config = {
"binaryTargets": [
{
"fromEnvVar": null,
- "value": "rhel-openssl-3.0.x",
+ "value": "windows",
"native": true
+ },
+ {
+ "fromEnvVar": null,
+ "value": "windows"
}
],
"previewFeatures": [],
- "sourceFilePath": "/home/damian/corecontrol/prisma/schema.prisma",
+ "sourceFilePath": "C:\\Users\\damia\\Desktop\\corecontrol\\CoreControl\\prisma\\schema.prisma",
"isCustomOutput": true
},
"relativeEnvPaths": {
@@ -333,8 +337,8 @@ const config = {
}
}
},
- "inlineSchema": "// This is your Prisma schema file,\n// learn more about it in the docs: https://pris.ly/d/prisma-schema\n\n// Looking for ways to speed up your queries, or scale easily with your serverless or edge functions?\n// Try Prisma Accelerate: https://pris.ly/cli/accelerate-init\n\ngenerator client {\n provider = \"prisma-client-js\"\n output = \"./generated/prisma\"\n}\n\ndatasource db {\n provider = \"postgresql\"\n url = env(\"DATABASE_URL\")\n}\n\nmodel User {\n id String @id @default(cuid())\n username String @unique\n name String\n email String @unique\n password String\n lastLogin DateTime?\n createdAt DateTime @default(now())\n updatedAt DateTime @updatedAt\n\n @@map(\"users\")\n}\n\nmodel Site {\n id Int @id @default(autoincrement())\n name String\n description String?\n networks Network[]\n\n @@map(\"sites\")\n}\n\nmodel Network {\n id Int @id @default(autoincrement())\n site Site @relation(fields: [siteId], references: [id], onDelete: Cascade)\n siteId Int\n name String\n ipv4Subnet String?\n ipv6Subnet String?\n gateway String?\n servers Server[]\n\n @@map(\"networks\")\n}\n\nmodel Server {\n id Int @id @default(autoincrement())\n network Network @relation(fields: [networkId], references: [id], onDelete: Cascade)\n networkId Int\n name String\n description String?\n icon String?\n ipv4Address String?\n osDetails String?\n cpuDetails String?\n gpuDetails String?\n memoryDetails String?\n storageDetails String?\n managementUrl String?\n monitoring Boolean @default(false)\n monitoringUrl String?\n monitoringData ServerMonitoring[]\n applications Application[]\n monitoringSettings ServerMonitoringSettings[]\n\n @@map(\"servers\")\n}\n\nmodel ServerMonitoring {\n id Int @id @default(autoincrement())\n server Server @relation(fields: [serverId], references: [id], onDelete: Cascade)\n serverId Int\n cpuPercentUsage Float\n gpuPercentUsage Float\n memoryUsage Float\n memoryPercentUsage Float\n diskUsage Float\n diskPercentUsage Float\n temperature Float\n online Boolean\n uptimeSeconds Int\n timestamp DateTime @default(now())\n\n @@index([serverId, timestamp])\n @@index([online])\n @@map(\"server_monitoring\")\n}\n\nmodel Application {\n id Int @id @default(autoincrement())\n server Server @relation(fields: [serverId], references: [id], onDelete: Cascade)\n serverId Int\n name String\n description String?\n icon String?\n url String?\n monitoring Boolean @default(false)\n monitoringData ApplicationMonitoring[]\n monitoringSettings ApplicationMonitoringSettings[]\n\n @@map(\"applications\")\n}\n\nmodel ApplicationMonitoring {\n id Int @id @default(autoincrement())\n application Application @relation(fields: [applicationId], references: [id], onDelete: Cascade)\n applicationId Int\n online Boolean\n latency Float\n timestamp DateTime @default(now())\n\n @@index([applicationId, timestamp])\n @@index([online])\n @@map(\"application_monitoring\")\n}\n\nmodel ServerMonitoringNotification {\n id Int @id @default(autoincrement())\n enabled Boolean @default(false)\n statusChange Boolean\n cpuLimit Float\n gpuLimit Float\n memoryLimit Float\n diskLimit Float\n temperatureLimit Float\n notificationTextStatus String\n notificationTextCpu String\n notificationTextGpu String\n notificationTextMemory String\n notificationTextDisk String\n notificationTextTemperature String\n notificationCpu Boolean\n notificationGpu Boolean\n notificationMemory Boolean\n notificationDisk Boolean\n notificationTemperature Boolean\n\n @@map(\"server_monitoring_notifications\")\n}\n\nmodel ApplicationMonitoringNotification {\n id Int @id @default(autoincrement())\n enabled Boolean @default(false)\n statusChange Boolean\n latencyLimit Float\n notificationTextStatus String\n notificationTextLatency String\n notificationLatency Boolean\n\n @@map(\"application_monitoring_notifications\")\n}\n\nmodel NotificationProvider {\n id Int @id @default(autoincrement())\n name String\n type NotificationType\n config Json\n tests NotificationTest[]\n\n @@map(\"notification_providers\")\n}\n\nmodel NotificationTest {\n id Int @id @default(autoincrement())\n notificationProvider NotificationProvider @relation(fields: [notificationProviderId], references: [id], onDelete: Cascade)\n notificationProviderId Int\n sent Boolean @default(false)\n success Boolean?\n\n @@map(\"notification_tests\")\n}\n\nenum NotificationType {\n TELEGRAM\n NTFY\n SMTP\n}\n\nmodel GeneralServerMonitoringSettings {\n id Int @id @default(autoincrement())\n frequency Int\n checksUntilOffline Int\n serverSettings ServerMonitoringSettings[]\n\n @@map(\"general_server_monitoring_settings\")\n}\n\nmodel GeneralApplicationMonitoringSettings {\n id Int @id @default(autoincrement())\n frequency Int\n checksUntilOffline Int\n applicationSettings ApplicationMonitoringSettings[]\n\n @@map(\"general_application_monitoring_settings\")\n}\n\nmodel ServerMonitoringSettings {\n id Int @id @default(autoincrement())\n server Server @relation(fields: [serverId], references: [id], onDelete: Cascade)\n serverId Int\n generalSettings GeneralServerMonitoringSettings @relation(fields: [generalSettingsId], references: [id], onDelete: Cascade)\n generalSettingsId Int\n}\n\nmodel ApplicationMonitoringSettings {\n id Int @id @default(autoincrement())\n application Application @relation(fields: [applicationId], references: [id], onDelete: Cascade)\n applicationId Int\n generalSettings GeneralApplicationMonitoringSettings @relation(fields: [generalSettingsId], references: [id], onDelete: Cascade)\n generalSettingsId Int\n}\n",
- "inlineSchemaHash": "e9ff6c55133a77b9162090ed7570d20b4726b6edc153a72a1ba297e0335fd97a",
+ "inlineSchema": "// This is your Prisma schema file,\n// learn more about it in the docs: https://pris.ly/d/prisma-schema\n\n// Looking for ways to speed up your queries, or scale easily with your serverless or edge functions?\n// Try Prisma Accelerate: https://pris.ly/cli/accelerate-init\n\ngenerator client {\n provider = \"prisma-client-js\"\n output = \"./generated/prisma\"\n binaryTargets = [\"native\", \"windows\"]\n}\n\ndatasource db {\n provider = \"postgresql\"\n url = env(\"DATABASE_URL\")\n}\n\nmodel User {\n id String @id @default(cuid())\n username String @unique\n name String\n email String @unique\n password String\n lastLogin DateTime?\n createdAt DateTime @default(now())\n updatedAt DateTime @updatedAt\n\n @@map(\"users\")\n}\n\nmodel Site {\n id Int @id @default(autoincrement())\n name String\n description String?\n networks Network[]\n\n @@map(\"sites\")\n}\n\nmodel Network {\n id Int @id @default(autoincrement())\n site Site @relation(fields: [siteId], references: [id], onDelete: Cascade)\n siteId Int\n name String\n ipv4Subnet String?\n ipv6Subnet String?\n gateway String?\n servers Server[]\n\n @@map(\"networks\")\n}\n\nmodel Server {\n id Int @id @default(autoincrement())\n network Network @relation(fields: [networkId], references: [id], onDelete: Cascade)\n networkId Int\n name String\n description String?\n icon String?\n ipv4Address String?\n osDetails String?\n cpuDetails String?\n gpuDetails String?\n memoryDetails String?\n storageDetails String?\n managementUrl String?\n monitoring Boolean @default(false)\n monitoringUrl String?\n monitoringData ServerMonitoring[]\n applications Application[]\n monitoringSettings ServerMonitoringSettings[]\n\n @@map(\"servers\")\n}\n\nmodel ServerMonitoring {\n id Int @id @default(autoincrement())\n server Server @relation(fields: [serverId], references: [id], onDelete: Cascade)\n serverId Int\n cpuPercentUsage Float\n gpuPercentUsage Float\n memoryUsage Float\n memoryPercentUsage Float\n diskUsage Float\n diskPercentUsage Float\n temperature Float\n online Boolean\n uptimeSeconds Int\n timestamp DateTime @default(now())\n\n @@index([serverId, timestamp])\n @@index([online])\n @@map(\"server_monitoring\")\n}\n\nmodel Application {\n id Int @id @default(autoincrement())\n server Server @relation(fields: [serverId], references: [id], onDelete: Cascade)\n serverId Int\n name String\n description String?\n icon String?\n url String?\n monitoring Boolean @default(false)\n monitoringData ApplicationMonitoring[]\n monitoringSettings ApplicationMonitoringSettings[]\n\n @@map(\"applications\")\n}\n\nmodel ApplicationMonitoring {\n id Int @id @default(autoincrement())\n application Application @relation(fields: [applicationId], references: [id], onDelete: Cascade)\n applicationId Int\n online Boolean\n latency Float\n timestamp DateTime @default(now())\n\n @@index([applicationId, timestamp])\n @@index([online])\n @@map(\"application_monitoring\")\n}\n\nmodel ServerMonitoringNotification {\n id Int @id @default(autoincrement())\n enabled Boolean @default(false)\n statusChange Boolean\n cpuLimit Float\n gpuLimit Float\n memoryLimit Float\n diskLimit Float\n temperatureLimit Float\n notificationTextStatus String\n notificationTextCpu String\n notificationTextGpu String\n notificationTextMemory String\n notificationTextDisk String\n notificationTextTemperature String\n notificationCpu Boolean\n notificationGpu Boolean\n notificationMemory Boolean\n notificationDisk Boolean\n notificationTemperature Boolean\n\n @@map(\"server_monitoring_notifications\")\n}\n\nmodel ApplicationMonitoringNotification {\n id Int @id @default(autoincrement())\n enabled Boolean @default(false)\n statusChange Boolean\n latencyLimit Float\n notificationTextStatus String\n notificationTextLatency String\n notificationLatency Boolean\n\n @@map(\"application_monitoring_notifications\")\n}\n\nmodel NotificationProvider {\n id Int @id @default(autoincrement())\n name String\n type NotificationType\n config Json\n tests NotificationTest[]\n\n @@map(\"notification_providers\")\n}\n\nmodel NotificationTest {\n id Int @id @default(autoincrement())\n notificationProvider NotificationProvider @relation(fields: [notificationProviderId], references: [id], onDelete: Cascade)\n notificationProviderId Int\n sent Boolean @default(false)\n success Boolean?\n\n @@map(\"notification_tests\")\n}\n\nenum NotificationType {\n TELEGRAM\n NTFY\n SMTP\n}\n\nmodel GeneralServerMonitoringSettings {\n id Int @id @default(autoincrement())\n frequency Int\n checksUntilOffline Int\n serverSettings ServerMonitoringSettings[]\n\n @@map(\"general_server_monitoring_settings\")\n}\n\nmodel GeneralApplicationMonitoringSettings {\n id Int @id @default(autoincrement())\n frequency Int\n checksUntilOffline Int\n applicationSettings ApplicationMonitoringSettings[]\n\n @@map(\"general_application_monitoring_settings\")\n}\n\nmodel ServerMonitoringSettings {\n id Int @id @default(autoincrement())\n server Server @relation(fields: [serverId], references: [id], onDelete: Cascade)\n serverId Int\n generalSettings GeneralServerMonitoringSettings @relation(fields: [generalSettingsId], references: [id], onDelete: Cascade)\n generalSettingsId Int\n}\n\nmodel ApplicationMonitoringSettings {\n id Int @id @default(autoincrement())\n application Application @relation(fields: [applicationId], references: [id], onDelete: Cascade)\n applicationId Int\n generalSettings GeneralApplicationMonitoringSettings @relation(fields: [generalSettingsId], references: [id], onDelete: Cascade)\n generalSettingsId Int\n}\n",
+ "inlineSchemaHash": "4a8fce365565e461319ce1c32ff87b1900e08f5ec28680ad5fa125c677eb76d9",
"copyEngine": true
}
@@ -373,8 +377,8 @@ exports.PrismaClient = PrismaClient
Object.assign(exports, Prisma)
// file annotations for bundling tools to include these files
-path.join(__dirname, "libquery_engine-rhel-openssl-3.0.x.so.node");
-path.join(process.cwd(), "prisma/generated/prisma/libquery_engine-rhel-openssl-3.0.x.so.node")
+path.join(__dirname, "query_engine-windows.dll.node");
+path.join(process.cwd(), "prisma/generated/prisma/query_engine-windows.dll.node")
// file annotations for bundling tools to include these files
path.join(__dirname, "schema.prisma");
path.join(process.cwd(), "prisma/generated/prisma/schema.prisma")
diff --git a/prisma/generated/prisma/package.json b/prisma/generated/prisma/package.json
index 5e6a107..a2d827c 100644
--- a/prisma/generated/prisma/package.json
+++ b/prisma/generated/prisma/package.json
@@ -1,5 +1,5 @@
{
- "name": "prisma-client-f1235714bbffddc1d2e6784ff382367dc9d016612d156baafb10f4a6136ed602",
+ "name": "prisma-client-d1e43606f7a3013467af671b0e6bb25d802256e22d857bc4d3e40d92038c4fbf",
"main": "index.js",
"types": "index.d.ts",
"browser": "index-browser.js",
diff --git a/prisma/generated/prisma/query_engine-windows.dll.node b/prisma/generated/prisma/query_engine-windows.dll.node
new file mode 100644
index 0000000..4c4d240
Binary files /dev/null and b/prisma/generated/prisma/query_engine-windows.dll.node differ
diff --git a/prisma/generated/prisma/schema.prisma b/prisma/generated/prisma/schema.prisma
index 83707b4..05a2b52 100644
--- a/prisma/generated/prisma/schema.prisma
+++ b/prisma/generated/prisma/schema.prisma
@@ -5,8 +5,9 @@
// Try Prisma Accelerate: https://pris.ly/cli/accelerate-init
generator client {
- provider = "prisma-client-js"
- output = "./generated/prisma"
+ provider = "prisma-client-js"
+ output = "./generated/prisma"
+ binaryTargets = ["native", "windows"]
}
datasource db {
diff --git a/prisma/schema.prisma b/prisma/schema.prisma
index 28f9185..d2e1a86 100644
--- a/prisma/schema.prisma
+++ b/prisma/schema.prisma
@@ -7,6 +7,7 @@
generator client {
provider = "prisma-client-js"
output = "./generated/prisma"
+ binaryTargets = ["native", "windows"]
}
datasource db {