import SwiftUI
import SwiftData

extension App {
    
    static func loadModelContainer() -> ModelContainer {
        do {
            return try ModelContainer(for: HistoryItem.self)
        } catch {
            print("[WARNING] Removing default SwiftData storage")
            removeDefaultModelContainer()
        }
        // Try again to load an empty container
        do {
            return try ModelContainer(for: HistoryItem.self)
        } catch {
            fatalError("Failed to create empty model container: \(error)")
        }
    }
    
    private static func removeDefaultModelContainer() {
        guard let appSupportDir = FileManager.default.urls(for: .applicationSupportDirectory, in: .userDomainMask).last else {
            fatalError("Failed to get application support directory")
        }
        do {
            try FileManager.default.contentsOfDirectory(at: appSupportDir, includingPropertiesForKeys: nil)
                .filter { $0.lastPathComponent.hasPrefix("default") }
                .forEach {
                try FileManager.default.removeItem(at: $0)
            }
        } catch {
            print(error)
            fatalError("Failed to remove default SwiftData database files")
        }
    }
    
}
