Phase5
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 13s

This commit is contained in:
smueller
2026-06-26 13:00:01 +02:00
parent 4262464cd5
commit d29a02f2a4
93 changed files with 1875 additions and 55 deletions

View File

@@ -0,0 +1,32 @@
-- Phase 5: Software & Add-ons
CREATE TYPE "AddonType" AS ENUM ('PLUGIN', 'MOD', 'MODPACK', 'DATAPACK');
CREATE TYPE "AddonInstallStatus" AS ENUM ('PENDING', 'INSTALLING', 'INSTALLED', 'FAILED', 'REMOVING', 'REMOVED');
CREATE TABLE "installed_addons" (
"id" TEXT NOT NULL,
"serverId" TEXT NOT NULL,
"provider" TEXT NOT NULL DEFAULT 'modrinth',
"projectId" TEXT NOT NULL,
"projectSlug" TEXT NOT NULL,
"projectName" TEXT NOT NULL,
"versionId" TEXT NOT NULL,
"versionNumber" TEXT NOT NULL,
"addonType" "AddonType" NOT NULL,
"fileName" TEXT NOT NULL,
"filePath" TEXT NOT NULL,
"fileSha512" TEXT,
"status" "AddonInstallStatus" NOT NULL DEFAULT 'PENDING',
"failureReason" TEXT,
"installedAt" TIMESTAMPTZ(3),
"createdAt" TIMESTAMPTZ(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
"updatedAt" TIMESTAMPTZ(3) NOT NULL,
CONSTRAINT "installed_addons_pkey" PRIMARY KEY ("id")
);
CREATE INDEX "installed_addons_serverId_idx" ON "installed_addons"("serverId");
CREATE INDEX "installed_addons_status_idx" ON "installed_addons"("status");
CREATE UNIQUE INDEX "installed_addons_serverId_projectId_versionId_key" ON "installed_addons"("serverId", "projectId", "versionId");
ALTER TABLE "installed_addons" ADD CONSTRAINT "installed_addons_serverId_fkey" FOREIGN KEY ("serverId") REFERENCES "game_servers"("id") ON DELETE CASCADE ON UPDATE CASCADE;

View File

@@ -96,6 +96,22 @@ enum WorldUploadStatus {
FAILED
}
enum AddonType {
PLUGIN
MOD
MODPACK
DATAPACK
}
enum AddonInstallStatus {
PENDING
INSTALLING
INSTALLED
FAILED
REMOVING
REMOVED
}
model User {
id String @id @default(uuid())
email String @unique
@@ -265,6 +281,7 @@ model GameServer {
backupRestores BackupRestore[]
backupSchedule BackupSchedule?
worldUploads WorldUpload[]
installedAddons InstalledAddon[]
@@index([userId])
@@index([nodeId])
@@ -502,3 +519,30 @@ model WorldUpload {
@@index([status])
@@map("world_uploads")
}
model InstalledAddon {
id String @id @default(uuid())
serverId String
provider String @default("modrinth")
projectId String
projectSlug String
projectName String
versionId String
versionNumber String
addonType AddonType
fileName String
filePath String
fileSha512 String?
status AddonInstallStatus @default(PENDING)
failureReason String?
installedAt DateTime? @db.Timestamptz(3)
createdAt DateTime @default(now()) @db.Timestamptz(3)
updatedAt DateTime @updatedAt @db.Timestamptz(3)
server GameServer @relation(fields: [serverId], references: [id], onDelete: Cascade)
@@unique([serverId, projectId, versionId])
@@index([serverId])
@@index([status])
@@map("installed_addons")
}