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) }