import Foundation
import SwiftData

@Model
final class StatsRecord {
    var variant: String
    var difficulty: String
    var gamesPlayed: Int
    var gamesWon: Int
    var bestScore: Int
    var bestTime: Int
    var currentStreak: Int
    var bestStreak: Int

    init(variant: GameVariant, difficulty: Difficulty) {
        self.variant = variant.rawValue
        self.difficulty = difficulty.rawValue
        self.gamesPlayed = 0
        self.gamesWon = 0
        self.bestScore = 0
        self.bestTime = Int.max
        self.currentStreak = 0
        self.bestStreak = 0
    }

    func recordWin(score: Int, time: Int) {
        gamesPlayed += 1
        gamesWon += 1
        if score > bestScore { bestScore = score }
        if time < bestTime { bestTime = time }
        currentStreak += 1
        if currentStreak > bestStreak { bestStreak = currentStreak }
    }

    func recordLoss() {
        gamesPlayed += 1
        currentStreak = 0
    }

    var winRate: Double {
        guard gamesPlayed > 0 else { return 0 }
        return Double(gamesWon) / Double(gamesPlayed)
    }
}
