model User {
  id         Int         @id @default(autoincrement())
  username   String      @unique
  password   String
  online     Boolean     @default(false)
  characters Character[]
}

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
}