generated from nhcarrigan/template
5025948530
- Grant Elysian Discord role to players on OAuth login (new and returning) - Add inGuild flag to Player schema, seeded from role grant response - Connect Discord Gateway WebSocket to keep inGuild in sync on join/leave - Return inGuild from load endpoint; expose in game context - Show join community modal once per session when inGuild is false
48 lines
1.4 KiB
Plaintext
48 lines
1.4 KiB
Plaintext
generator client {
|
|
provider = "prisma-client-js"
|
|
}
|
|
|
|
datasource db {
|
|
provider = "mongodb"
|
|
url = env("DATABASE_URL")
|
|
}
|
|
|
|
model Player {
|
|
id String @id @default(auto()) @map("_id") @db.ObjectId
|
|
discordId String @unique
|
|
username String
|
|
discriminator String
|
|
avatar String?
|
|
characterName String @default("")
|
|
pronouns String @default("")
|
|
characterRace String @default("")
|
|
characterClass String @default("")
|
|
bio String @default("")
|
|
guildName String @default("")
|
|
guildDescription String @default("")
|
|
profileSettings Json?
|
|
unlockedTitles Json?
|
|
activeTitle String @default("")
|
|
createdAt Float
|
|
lastSavedAt Float
|
|
totalGoldEarned Float @default(0)
|
|
totalClicks Float @default(0)
|
|
lifetimeGoldEarned Float @default(0)
|
|
lifetimeClicks Float @default(0)
|
|
lifetimeBossesDefeated Float @default(0)
|
|
lifetimeQuestsCompleted Float @default(0)
|
|
lifetimeAdventurersRecruited Float @default(0)
|
|
lifetimeAchievementsUnlocked Float @default(0)
|
|
lastLoginDate String?
|
|
loginStreak Int @default(1)
|
|
inGuild Boolean @default(false)
|
|
}
|
|
|
|
model GameState {
|
|
id String @id @default(auto()) @map("_id") @db.ObjectId
|
|
discordId String @unique
|
|
state Json
|
|
updatedAt Float
|
|
}
|
|
|