mirror of
https://github.com/crocofied/CoreControl.git
synced 2025-12-18 07:56:57 +00:00
152 lines
3.8 KiB
Plaintext
152 lines
3.8 KiB
Plaintext
// This is your Prisma schema file,
|
|
// learn more about it in the docs: https://pris.ly/d/prisma-schema
|
|
|
|
// Looking for ways to speed up your queries, or scale easily with your serverless or edge functions?
|
|
// Try Prisma Accelerate: https://pris.ly/cli/accelerate-init
|
|
|
|
generator client {
|
|
provider = "prisma-client-js"
|
|
output = "./generated/prisma"
|
|
}
|
|
|
|
datasource db {
|
|
provider = "postgresql"
|
|
url = env("DATABASE_URL")
|
|
}
|
|
|
|
model User {
|
|
id String @id @default(cuid())
|
|
username String @unique
|
|
name String
|
|
email String @unique
|
|
password String
|
|
lastLogin DateTime?
|
|
createdAt DateTime @default(now())
|
|
updatedAt DateTime @updatedAt
|
|
|
|
@@map("users")
|
|
}
|
|
|
|
model Site {
|
|
id Int @id @default(autoincrement())
|
|
name String
|
|
description String?
|
|
networks Network[]
|
|
|
|
@@map("sites")
|
|
}
|
|
|
|
model Network {
|
|
id Int @id @default(autoincrement())
|
|
site Site @relation(fields: [siteId], references: [id], onDelete: Cascade)
|
|
siteId Int
|
|
name String
|
|
ipv4Subnet String?
|
|
ipv6Subnet String?
|
|
gateway String?
|
|
servers Server[]
|
|
|
|
@@map("networks")
|
|
}
|
|
|
|
model Server {
|
|
id Int @id @default(autoincrement())
|
|
network Network @relation(fields: [networkId], references: [id], onDelete: Cascade)
|
|
networkId Int
|
|
name String
|
|
description String?
|
|
icon String?
|
|
ipv4Address String?
|
|
osDetails String?
|
|
cpuDetails String?
|
|
gpuDetails String?
|
|
memoryDetails String?
|
|
storageDetails String?
|
|
managementUrl String?
|
|
monitoring Boolean @default(false)
|
|
monitoringUrl String?
|
|
monitoringData ServerMonitoring[]
|
|
applications Application[]
|
|
|
|
@@map("servers")
|
|
}
|
|
|
|
model ServerMonitoring {
|
|
id Int @id @default(autoincrement())
|
|
server Server @relation(fields: [serverId], references: [id], onDelete: Cascade)
|
|
serverId Int
|
|
cpuUsage Float
|
|
gpuUsage Float
|
|
memoryUsage Float
|
|
diskUsage Float
|
|
temperature Float
|
|
online Boolean
|
|
uptimeSeconds Int
|
|
timestamp DateTime @default(now())
|
|
|
|
@@index([serverId, timestamp])
|
|
@@index([online])
|
|
|
|
@@map("server_monitoring")
|
|
}
|
|
|
|
model Application {
|
|
id Int @id @default(autoincrement())
|
|
server Server @relation(fields: [serverId], references: [id], onDelete: Cascade)
|
|
serverId Int
|
|
name String
|
|
description String?
|
|
icon String?
|
|
url String?
|
|
monitoring Boolean @default(false)
|
|
monitoringData ApplicationMonitoring[]
|
|
|
|
@@map("applications")
|
|
}
|
|
|
|
model ApplicationMonitoring {
|
|
id Int @id @default(autoincrement())
|
|
application Application @relation(fields: [applicationId], references: [id], onDelete: Cascade)
|
|
applicationId Int
|
|
online Boolean
|
|
latency Float
|
|
timestamp DateTime @default(now())
|
|
|
|
@@index([applicationId, timestamp])
|
|
@@index([online])
|
|
|
|
@@map("application_monitoring")
|
|
}
|
|
|
|
model ServerMonitoringNotification {
|
|
id Int @id @default(autoincrement())
|
|
statusChange Boolean
|
|
cpuLimit Float
|
|
gpuLimit Float
|
|
memoryLimit Float
|
|
diskLimit Float
|
|
temperatureLimit Float
|
|
|
|
@@map("server_monitoring_notifications")
|
|
}
|
|
|
|
model ApplicationMonitoringNotification {
|
|
id Int @id @default(autoincrement())
|
|
statusChange Boolean
|
|
latencyLimit Float
|
|
|
|
@@map("application_monitoring_notifications")
|
|
}
|
|
|
|
model NotificationProvider {
|
|
id Int @id @default(autoincrement())
|
|
name String
|
|
type NotificationType
|
|
config Json
|
|
|
|
@@map("notification_providers")
|
|
}
|
|
|
|
enum NotificationType {
|
|
TELEGRAM
|
|
} |