This commit is contained in:
2026-02-03 11:59:58 +08:00
parent 33232d25fe
commit eb5b7bf16d
10 changed files with 210 additions and 132 deletions

3
.gitignore vendored
View File

@@ -41,3 +41,6 @@ yarn-error.log*
next-env.d.ts
/app/generated/prisma
# test database
/database

View File

@@ -1,3 +1,12 @@
## 更新数据库prisma
`npx prisma migrate dev --name init`
`npx prisma migrate dev --name init`
### arch笔记本mysql测试服务器
``
mysqld --basedir=/usr \
--datadir=/home/aecw/re-AstarCupWeb/database \
--socket=/home/aecw/re-AstarCupWeb/database/mysql.sock \
--pid-file=/home/aecw/re-AstarCupWeb/database/mysql.pid &
``

View File

@@ -0,0 +1,65 @@
model Beatmap {
id Int @id @default(autoincrement())
beatmap_id Int @unique
beatmapset_id Int @unique
title String
title_unicode String
artist String
artist_unicode String
creator String
cover_url String
version String
ar Float
od Float
cs Float
hp Float
bpm Float
length Int
max_combo Int
star_rating Float
mod Json @default("{}")
selectMod BeatmapSelectMod @default(NM)
selectModSlot Int @default(1)
selectByosuId Int
user User @relation(fields: [selectByosuId], references: [osuid])
selectNote String @default("")
approved Boolean @default(false)
needTest Boolean @default(false)
isCustom Boolean @default(false)
isOriginal Boolean @default(false)
season Int @default(1)
category BeatmapCategory @default(QUA)
enabled Boolean @default(true)
createdAt DateTime @default(now())
updatedAt DateTime @updatedAt
beatmapComment BeatmapComment?
}
enum BeatmapCategory {
QUA
RO16
QF
SF
F
GF
}
enum BeatmapSelectMod {
NM
HD
HR
DT
LZ
TB
}
model BeatmapComment {
id Int @id @default(autoincrement())
beatmap_id Int @unique
beatmap Beatmap @relation(fields: [beatmap_id], references: [beatmap_id])
comment String @default("")
osuid Int @unique
user User @relation(fields: [osuid], references: [osuid])
createdAt DateTime @default(now())
updatedAt DateTime @updatedAt
}

View File

@@ -0,0 +1,7 @@
model Message {
id Int @id @default(autoincrement())
content String
osuid Int
user User @relation(fields: [osuid], references: [osuid])
receiverId Int
}

View File

@@ -0,0 +1,18 @@
enum MultiplayerRoomType {
SOLO
TEAM_VS
}
model MultiplayerSoloRoom {
room_id Int @id @default(autoincrement())
type MultiplayerRoomType @default(SOLO)
player_red_id Int @unique
player_blue_id Int @unique
score_red Int
score_blue Int
start_time DateTime
end_time DateTime
createdAt DateTime @default(now())
updatedAt DateTime @updatedAt
teamId Int?
}

View File

@@ -0,0 +1,12 @@
model MultiplayerTeamvsRoom {
room_id Int @id @default(autoincrement())
type MultiplayerRoomType @default(SOLO)
team_red_id Int @unique
team_blue_id Int @unique
start_time DateTime
end_time DateTime
createdAt DateTime @default(now())
updatedAt DateTime @updatedAt
team Team? @relation(fields: [teamId], references: [id])
teamId Int?
}

23
prisma/models/Team.prisma Normal file
View File

@@ -0,0 +1,23 @@
model Team {
id Int @id @default(autoincrement())
name String
banner_url String
teamType TeamColor
members User[]
teamState TeamState @default(ACTIVE)
createdAt DateTime @default(now())
updatedAt DateTime @updatedAt
multiplayerRooms MultiplayerTeamvsRoom[]
}
enum TeamColor {
blue_team
red_team
}
enum TeamState {
ACTIVE
UNAPPROVED
APPROVED
BANNED
}

49
prisma/models/User.prisma Normal file
View File

@@ -0,0 +1,49 @@
model User {
id Int @id @default(autoincrement())
userState UserState @default(ACTIVE)
osuid Int @unique
username String @unique
pp Float @default(0)
global_rank Int @default(0)
country_rank Int @default(0)
country String
approved Int @default(0)
seed Int @default(0)
seasonal Int @default(1)
teams Team[]
userGroups UserGroup[]
beatmapComments BeatmapComment[]
messages Message[]
createdAt DateTime @default(now())
updatedAt DateTime @updatedAt
beatmaps Beatmap[]
}
enum UserState {
ACTIVE
REGISTERED
ABANDONED
BANNED
}
model UserGroup {
id Int @id @default(autoincrement())
group UserGroupType
users User[]
createdAt DateTime @default(now())
updatedAt DateTime @updatedAt
}
enum UserGroupType {
HOST
ADMIN
POOLER
STREAMER
TESTER
GFX
SHEETER
PLAYER
COMMENTATOR
MAPPER
REFEREE
}

View File

@@ -0,0 +1,21 @@
model UserGroup {
id Int @id @default(autoincrement())
group UserGroupType
users User[]
createdAt DateTime @default(now())
updatedAt DateTime @updatedAt
}
enum UserGroupType {
HOST
ADMIN
POOLER
STREAMER
TESTER
GFX
SHEETER
PLAYER
COMMENTATOR
MAPPER
REFEREE
}

View File

@@ -10,143 +10,14 @@ generator client {
}
datasource db {
// provider = "postgres"
provider = "mysql"
}
model User {
id Int @id @default(autoincrement())
osuid Int @unique
username String @unique
pp Float @default(0)
global_rank Int @default(0)
country_rank Int @default(0)
country String
approved Int @default(0)
teams Team[]
seed Int @default(0)
seasonal Int @default(1)
createdAt DateTime @default(now())
updatedAt DateTime @updatedAt
userGroups UserGroup[]
beatmapComments BeatmapComment[]
beatmap Beatmap?
}
model UserGroup {
id Int @id @default(autoincrement())
name String @unique
users User[]
group UserGroupType
createdAt DateTime @default(now())
updatedAt DateTime @updatedAt
}
enum UserGroupType {
HOST
ADMIN
POOLER
STREAMER
TESTER
GFX
SHEETER
PLAYER
COMMENTATOR
MAPPER
REFEREE
}
model Team {
id Int @id @default(autoincrement())
name String @unique
banner_url String
members User[]
createdAt DateTime @default(now())
updatedAt DateTime @updatedAt
}
model Setting {
model TournamentConfig {
id Int @id @default(autoincrement())
tournament_name String @default("AstarCup")
max_pp_for_registration Float @default(0)
min_approved_playcount Float @default(0)
current_seasonal Int @default(1)
}
model Beatmap {
id Int @id @default(autoincrement())
beatmap_id Int @unique
beatmapset_id Int @unique
title String @unique
title_unicode String @unique
artist String @unique
artist_unicode String @unique
creator String @unique
cover_url String @unique
version String @unique
ar Float @unique
od Float @unique
cs Float @unique
hp Float @unique
bpm Float @unique
length Int @unique
max_combo Int @unique
star_rating Float @unique
mod Json
selectMod BeatmapSelectMod @default(NM)
selectModSlot Int @default(1)
selectByosuId Int @unique
user User @relation(fields: [selectByosuId], references: [osuid])
approved Boolean @default(false)
needTest Boolean @default(false)
isCustom Boolean @default(false)
isOriginal Boolean @default(false)
season Int @default(1)
category BeatmapCategory
createdAt DateTime @default(now())
updatedAt DateTime @updatedAt
beatmapComment BeatmapComment?
}
enum BeatmapCategory {
qua
ro16
sf
f
gf
// todo: fix this
}
enum BeatmapSelectMod {
NM
HD
HR
DT
LZ
TB
}
model BeatmapComment {
id Int @id @default(autoincrement())
beatmap_id Int @unique
beatmap Beatmap @relation(fields: [beatmap_id], references: [beatmap_id])
comment String @default("")
osuid Int @unique
user User @relation(fields: [osuid], references: [osuid])
createdAt DateTime @default(now())
updatedAt DateTime @updatedAt
}
model MultiplayerRoom {
room_id Int @id @default(autoincrement())
type MultiplayerRoomType @default(SOLO)
start_time DateTime
end_time DateTime
createdAt DateTime @default(now())
updatedAt DateTime @updatedAt
}
enum MultiplayerRoomType {
SOLO
TEAM_VS
}