diff --git a/oAI/Models/UsageStats.swift b/oAI/Models/UsageStats.swift index a35fa7d..8a7f520 100644 --- a/oAI/Models/UsageStats.swift +++ b/oAI/Models/UsageStats.swift @@ -24,13 +24,29 @@ import Foundation struct UsageStats: Sendable { - var totalMessages: Int = 0 - var totalTokens: Int = 0 - var totalCost: Double = 0.0 - var hasCostData: Bool = false + var totalMessages: Int + var totalTokens: Int + var totalCost: Double + var hasCostData: Bool var firstMessageDate: Date? var lastMessageDate: Date? + nonisolated init( + totalMessages: Int = 0, + totalTokens: Int = 0, + totalCost: Double = 0.0, + hasCostData: Bool = false, + firstMessageDate: Date? = nil, + lastMessageDate: Date? = nil + ) { + self.totalMessages = totalMessages + self.totalTokens = totalTokens + self.totalCost = totalCost + self.hasCostData = hasCostData + self.firstMessageDate = firstMessageDate + self.lastMessageDate = lastMessageDate + } + var totalTokensDisplay: String { if totalTokens >= 1_000_000 { return String(format: "%.1fM", Double(totalTokens) / 1_000_000) @@ -55,6 +71,22 @@ struct ModelUsageStat: Identifiable, Sendable { var hasCostData: Bool var lastUsed: Date + nonisolated init( + modelId: String, + messageCount: Int, + totalTokens: Int, + totalCost: Double, + hasCostData: Bool, + lastUsed: Date + ) { + self.modelId = modelId + self.messageCount = messageCount + self.totalTokens = totalTokens + self.totalCost = totalCost + self.hasCostData = hasCostData + self.lastUsed = lastUsed + } + var totalTokensDisplay: String { if totalTokens >= 1_000_000 { return String(format: "%.1fM", Double(totalTokens) / 1_000_000) @@ -79,6 +111,22 @@ struct ConversationUsageStat: Identifiable, Sendable { var totalCost: Double var hasCostData: Bool + nonisolated init( + conversationId: UUID, + name: String, + messageCount: Int, + totalTokens: Int, + totalCost: Double, + hasCostData: Bool + ) { + self.conversationId = conversationId + self.name = name + self.messageCount = messageCount + self.totalTokens = totalTokens + self.totalCost = totalCost + self.hasCostData = hasCostData + } + var totalTokensDisplay: String { if totalTokens >= 1_000_000 { return String(format: "%.1fM", Double(totalTokens) / 1_000_000) diff --git a/oAI/Services/DatabaseService.swift b/oAI/Services/DatabaseService.swift index 9fdeee3..ea5d112 100644 --- a/oAI/Services/DatabaseService.swift +++ b/oAI/Services/DatabaseService.swift @@ -639,7 +639,7 @@ final class DatabaseService: Sendable { nonisolated func deleteFolder(id: UUID) throws { try dbQueue.write { db in - try FolderRecord.deleteOne(db, key: id.uuidString) + _ = try FolderRecord.deleteOne(db, key: id.uuidString) } }