// This is your Prisma schema file,
// learn more about it in the docs: https://pris.ly/d/prisma-schema

generator client {
  provider = "prisma-client-js"
}

datasource db {
  provider = "mysql"
  url      = env("DATABASE_URL")
  relationMode = "prisma"
}

// 困擾案例主表
model Wish {
  id               BigInt   @id @default(autoincrement())
  title            String   @db.VarChar(200)
  currentPain      String   @map("current_pain") @db.Text
  expectedSolution String   @map("expected_solution") @db.Text
  expectedEffect   String?  @map("expected_effect") @db.Text
  isPublic         Boolean  @default(true) @map("is_public")
  email            String?  @db.VarChar(255)
  images           Json     @default("[]")
  userSession      String   @map("user_session") @db.VarChar(255)
  status           String   @default("active") @db.VarChar(50)
  category         String?  @db.VarChar(100)
  priority         Int      @default(3)
  createdAt        DateTime @default(now()) @map("created_at")
  updatedAt        DateTime @updatedAt @map("updated_at")

  // 關聯
  likes WishLike[]

  @@map("wishes")
}

// 點讚記錄表
model WishLike {
  id          BigInt   @id @default(autoincrement())
  wishId      BigInt   @map("wish_id")
  userSession String   @map("user_session") @db.VarChar(255)
  ipAddress   String?  @map("ip_address") @db.VarChar(45)
  userAgent   String?  @map("user_agent") @db.Text
  createdAt   DateTime @default(now()) @map("created_at")

  // 關聯
  wish Wish @relation(fields: [wishId], references: [id], onDelete: Cascade)

  @@unique([wishId, userSession])
  @@map("wish_likes")
}

// 用戶設定表
model UserSetting {
  id                    BigInt   @id @default(autoincrement())
  userSession           String   @unique @map("user_session") @db.VarChar(255)
  backgroundMusicEnabled Boolean  @default(false) @map("background_music_enabled")
  backgroundMusicVolume Decimal  @default(0.30) @map("background_music_volume") @db.Decimal(3, 2)
  backgroundMusicPlaying Boolean @default(false) @map("background_music_playing")
  themePreference       String   @default("auto") @map("theme_preference") @db.VarChar(50)
  languagePreference    String   @default("zh-TW") @map("language_preference") @db.VarChar(10)
  notificationEnabled   Boolean  @default(true) @map("notification_enabled")
  createdAt            DateTime @default(now()) @map("created_at")
  updatedAt            DateTime @updatedAt @map("updated_at")

  @@map("user_settings")
}

// 遷移記錄表
model MigrationLog {
  id            BigInt   @id @default(autoincrement())
  userSession   String   @map("user_session") @db.VarChar(255)
  migrationType String   @map("migration_type") @db.VarChar(50)
  sourceData    Json?    @map("source_data")
  targetRecords Int      @default(0) @map("target_records")
  success       Boolean  @default(false)
  errorMessage  String?  @map("error_message") @db.Text
  createdAt     DateTime @default(now()) @map("created_at")

  @@map("migration_log")
}

// 系統統計表
model SystemStat {
  id            BigInt   @id @default(autoincrement())
  statDate      DateTime @unique @map("stat_date") @db.Date
  totalWishes   Int      @default(0) @map("total_wishes")
  publicWishes  Int      @default(0) @map("public_wishes")
  privateWishes Int      @default(0) @map("private_wishes")
  totalLikes    Int      @default(0) @map("total_likes")
  activeUsers   Int      @default(0) @map("active_users")
  storageUsedMb Decimal  @default(0) @map("storage_used_mb") @db.Decimal(10, 2)
  createdAt     DateTime @default(now()) @map("created_at")

  @@map("system_stats")
} 