Phase8
Some checks failed
CI / Node — lint, typecheck, test, build (push) Failing after 9s
CI / Go — node-agent tests (push) Failing after 9s
CI / Go — edge-gateway build (push) Successful in 17s

This commit is contained in:
smueller
2026-06-26 13:33:03 +02:00
parent ab21f53cdd
commit b335f6a497
39 changed files with 1477 additions and 20 deletions

View File

@@ -128,6 +128,13 @@ enum CreditTransactionType {
EXPIRE
}
enum DnsRecordStatus {
PENDING
ACTIVE
FAILED
REMOVED
}
model User {
id String @id @default(uuid())
email String @unique
@@ -291,6 +298,8 @@ model GameServer {
idleStopAt DateTime? @db.Timestamptz(3)
runningSince DateTime? @db.Timestamptz(3)
lastMeteredAt DateTime? @db.Timestamptz(3)
joinSlug String? @unique
joinToStartEnabled Boolean @default(true)
createdAt DateTime @default(now()) @db.Timestamptz(3)
updatedAt DateTime @updatedAt @db.Timestamptz(3)
@@ -306,6 +315,7 @@ model GameServer {
installedAddons InstalledAddon[]
startQueueEntry ServerStartQueueEntry?
usageRecords UsageRecord[]
dnsRecords ServerDnsRecord[]
@@index([userId])
@@index([nodeId])
@@ -359,6 +369,8 @@ model GameNode {
maxServers Int @default(10)
maxRamMb Int @default(16384)
platformRamMb Int @default(2048)
portRangeStart Int @default(25565)
portRangeEnd Int @default(25664)
activeServers Int @default(0)
lastHeartbeatAt DateTime? @db.Timestamptz(3)
agentVersion String?
@@ -650,3 +662,25 @@ model InstalledAddon {
@@index([status])
@@map("installed_addons")
}
model ServerDnsRecord {
id String @id @default(uuid())
serverId String
fqdn String
recordType String
target String
port Int?
srvPriority Int?
srvWeight Int?
status DnsRecordStatus @default(PENDING)
lastSyncedAt DateTime? @db.Timestamptz(3)
lastError String?
createdAt DateTime @default(now()) @db.Timestamptz(3)
updatedAt DateTime @updatedAt @db.Timestamptz(3)
server GameServer @relation(fields: [serverId], references: [id], onDelete: Cascade)
@@unique([serverId, recordType, fqdn])
@@index([fqdn])
@@map("server_dns_records")
}