Phase5
This commit is contained in:
@@ -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;
|
||||
@@ -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")
|
||||
}
|
||||
|
||||
@@ -16,6 +16,7 @@ export type {
|
||||
BackupRestore,
|
||||
BackupSchedule,
|
||||
WorldUpload,
|
||||
InstalledAddon,
|
||||
GameNode,
|
||||
GameNodeHeartbeat,
|
||||
Plan,
|
||||
|
||||
File diff suppressed because one or more lines are too long
Reference in New Issue
Block a user