151 lines
4.0 KiB
Plaintext
151 lines
4.0 KiB
Plaintext
generator client {
|
|
provider = "prisma-client"
|
|
output = "../src/generated/prisma"
|
|
}
|
|
|
|
datasource db {
|
|
provider = "postgresql"
|
|
}
|
|
|
|
model Admin {
|
|
id String @id @default(cuid())
|
|
username String @unique
|
|
passwordHash String
|
|
createdAt DateTime @default(now())
|
|
}
|
|
|
|
model Addon {
|
|
id String @id @default(cuid())
|
|
name String
|
|
slug String @unique
|
|
summary String
|
|
description String @db.Text
|
|
iconUrl String?
|
|
category String @default("general")
|
|
published Boolean @default(false)
|
|
totalDownloads Int @default(0)
|
|
createdAt DateTime @default(now())
|
|
updatedAt DateTime @updatedAt
|
|
releases Release[]
|
|
screenshots Screenshot[]
|
|
|
|
@@index([published, totalDownloads])
|
|
@@index([category])
|
|
}
|
|
|
|
model Release {
|
|
id String @id @default(cuid())
|
|
addonId String
|
|
version String
|
|
changelog String @db.Text
|
|
downloadType String @default("local")
|
|
filePath String?
|
|
externalUrl String?
|
|
gameVersion String @default("")
|
|
downloadCount Int @default(0)
|
|
isLatest Boolean @default(false)
|
|
createdAt DateTime @default(now())
|
|
addon Addon @relation(fields: [addonId], references: [id], onDelete: Cascade)
|
|
|
|
@@index([addonId])
|
|
}
|
|
|
|
model Screenshot {
|
|
id String @id @default(cuid())
|
|
addonId String
|
|
imageUrl String
|
|
sortOrder Int @default(0)
|
|
addon Addon @relation(fields: [addonId], references: [id], onDelete: Cascade)
|
|
|
|
@@index([addonId])
|
|
}
|
|
|
|
model Software {
|
|
id String @id @default(cuid())
|
|
name String
|
|
slug String @unique
|
|
description String @default("")
|
|
createdAt DateTime @default(now())
|
|
updatedAt DateTime @updatedAt
|
|
versions SoftwareVersion[]
|
|
}
|
|
|
|
model SoftwareVersion {
|
|
id String @id @default(cuid())
|
|
softwareId String
|
|
version String
|
|
versionCode Int
|
|
changelog String @db.Text
|
|
downloadType String @default("local")
|
|
filePath String?
|
|
externalUrl String?
|
|
fileSize Int @default(0)
|
|
downloadCount Int @default(0)
|
|
launcherDownloadCount Int @default(0)
|
|
isLatest Boolean @default(false)
|
|
forceUpdate Boolean @default(false)
|
|
minVersion String?
|
|
createdAt DateTime @default(now())
|
|
software Software @relation(fields: [softwareId], references: [id], onDelete: Cascade)
|
|
|
|
@@unique([softwareId, version])
|
|
@@index([softwareId])
|
|
}
|
|
|
|
model BannerImage {
|
|
id String @id @default(cuid())
|
|
imageUrl String
|
|
sortOrder Int @default(0)
|
|
enabled Boolean @default(true)
|
|
createdAt DateTime @default(now())
|
|
}
|
|
|
|
model GalleryImage {
|
|
id String @id @default(cuid())
|
|
imageUrl String
|
|
title String @default("")
|
|
sortOrder Int @default(0)
|
|
enabled Boolean @default(true)
|
|
createdAt DateTime @default(now())
|
|
}
|
|
|
|
model Article {
|
|
id String @id @default(cuid())
|
|
title String
|
|
slug String @unique
|
|
summary String @default("")
|
|
content String @db.Text
|
|
coverImage String?
|
|
published Boolean @default(false)
|
|
createdAt DateTime @default(now())
|
|
updatedAt DateTime @updatedAt
|
|
|
|
@@index([published, createdAt])
|
|
}
|
|
|
|
model PageView {
|
|
id String @id @default(cuid())
|
|
path String
|
|
referrer String @default("")
|
|
userAgent String @default("")
|
|
ip String @default("")
|
|
date String
|
|
createdAt DateTime @default(now())
|
|
|
|
@@index([date])
|
|
@@index([path])
|
|
}
|
|
|
|
model LauncherOnline {
|
|
id String @id @default(cuid())
|
|
deviceId String @unique
|
|
ip String @default("")
|
|
os String @default("")
|
|
osVersion String @default("")
|
|
appVersion String @default("")
|
|
lastSeen DateTime @default(now())
|
|
createdAt DateTime @default(now())
|
|
|
|
@@index([lastSeen])
|
|
}
|