sendou.ink/prisma/schema.prisma
Kalle (Sendou) 9735bc26b1 initial l
2020-12-05 22:02:47 +02:00

160 lines
2.9 KiB
Plaintext

datasource db {
provider = "postgresql"
// TODO: should use same .env system as Next.JS
url = env("DATABASE_URL")
}
generator client {
provider = "prisma-client-js"
}
model User {
id Int @id @default(autoincrement())
username String
discriminator String
discordId String @unique
discordAvatar String?
profile Profile?
player Player?
builds Build[]
}
model Profile {
twitterName String?
twitchName String?
youtubeId String?
country String?
sensMotion Float?
sensStick Float?
bio String?
weaponPool String[]
customUrlPath String? @unique
user User @relation(fields: [userId], references: [id])
userId Int @unique
}
enum RankedMode {
SZ
TC
RM
CB
}
enum Mode {
TW
SZ
TC
RM
CB
}
model XRankPlacement {
id Int @id @default(autoincrement())
switchAccountId String
player Player @relation(fields: [switchAccountId], references: [switchAccountId])
playerName String
ranking Int
xPower Float
weapon String
mode RankedMode
month Int
year Int
@@unique([switchAccountId, mode, month, year])
}
enum Region {
EU
NA
JP
}
enum LeagueType {
TWIN
QUAD
}
model LeagueSquad {
id Int @id @default(autoincrement())
region Region
type LeagueType
leaguePower Float
startTime DateTime
members LeagueSquadMember[]
@@index([leaguePower, type, region])
}
model LeagueSquadMember {
squadId Int
squad LeagueSquad @relation(fields: [squadId], references: [id])
switchAccountId String
player Player @relation(fields: [switchAccountId], references: [switchAccountId])
weapon String
@@unique([squadId, switchAccountId])
}
model Player {
switchAccountId String @unique
userId Int? @unique
name String?
placements XRankPlacement[]
user User? @relation(fields: [userId], references: [id])
leaguePlacements LeagueSquadMember[]
}
enum Ability {
CB
LDE
OG
T
H
NS
TI
RP
AD
DR
SJ
OS
BDU
REC
RES
ISM
ISS
MPU
QR
QSJ
RSU
SSU
SCU
SPU
SS
BRU
}
model Build {
id Int @id @default(autoincrement())
userId Int
weapon String
title String?
description String?
modes Mode[]
headGear String?
headAbilities Ability[]
clothingGear String?
clothingAbilities Ability[]
shoesGear String?
shoesAbilities Ability[]
abilityPoints Json
top500 Boolean
jpn Boolean
updatedAt DateTime @updatedAt
user User @relation(fields: [userId], references: [id])
@@index(weapon)
@@index(userId)
@@index(abilityPoints)
}