- Banner: Ken Burns缩放动效、左右导航箭头、进度条指示器、hover暂停、暗角遮罩、shimmer按钮动画 - 新增文章管理(CRUD)与公开文章页 - 新增Banner/Gallery图片管理API - 新增媒体管理页面 - 新增更新日志页面 - 新增页面访问追踪 - 新增Markdown渲染组件 - .gitignore排除.cursor目录 Made-with: Cursor
132 lines
3.4 KiB
Plaintext
132 lines
3.4 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[]
|
|
}
|
|
|
|
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)
|
|
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
|
|
}
|
|
|
|
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])
|
|
}
|