model User { id Int @id @default(autoincrement()) username String @unique email String @unique password String online Boolean @default(false) characters Character[] passwordResetTokens PasswordResetToken[] } model PasswordResetToken { id Int @id @default(autoincrement()) userId Int user User @relation(fields: [userId], references: [id], onDelete: Cascade) token String @unique createdAt DateTime @default(now()) } enum CharacterGender { MALE FEMALE } enum CharacterRace { HUMAN ELF DWARF ORC GOBLIN } model CharacterType { id Int @id @default(autoincrement()) name String gender CharacterGender race CharacterRace characters Character[] spriteId String? sprite Sprite? @relation(fields: [spriteId], references: [id], onDelete: Cascade) createdAt DateTime @default(now()) updatedAt DateTime @updatedAt } model Character { id Int @id @default(autoincrement()) userId Int user User @relation(fields: [userId], references: [id], onDelete: Cascade) name String @unique online Boolean @default(false) hitpoints Int @default(100) mana Int @default(100) level Int @default(1) experience Int @default(0) alignment Int @default(50) role String @default("player") positionX Int @default(0) positionY Int @default(0) rotation Int @default(0) zoneId Int @default(1) zone Zone @relation(fields: [zoneId], references: [id], onDelete: Cascade) characterTypeId Int? characterType CharacterType? @relation(fields: [characterTypeId], references: [id], onDelete: Cascade) chats Chat[] items CharacterItem[] } model CharacterItem { id Int @id @default(autoincrement()) characterId Int character Character @relation(fields: [characterId], references: [id], onDelete: Cascade) itemId String item Item @relation(fields: [itemId], references: [id], onDelete: Cascade) quantity Int }