mirror of
https://github.com/crocofied/CoreControl.git
synced 2025-12-29 16:14:43 +00:00
Prisma Schema
This commit is contained in:
@@ -13,3 +13,140 @@ 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
|
||||
}
|
||||
Reference in New Issue
Block a user