import SwiftUI
import SwiftData

@main
struct StudyDeckApp: App {
    var sharedModelContainer: ModelContainer = {
        let schema = Schema([
            CatalogEntry.self,
            StudySession.self,
            Album.self,
            AppSettings.self,
            LocalCourse.self,
        ])
        let configuration = ModelConfiguration(schema: schema, isStoredInMemoryOnly: false)
        do {
            return try ModelContainer(for: schema, configurations: [configuration])
        } catch {
            // Incompatible legacy store from parent-desk ios — wipe and recreate once.
            if let support = FileManager.default.urls(for: .applicationSupportDirectory, in: .userDomainMask).first {
                let candidates = [
                    support.appendingPathComponent("default.store"),
                    support.appendingPathComponent("default.store-shm"),
                    support.appendingPathComponent("default.store-wal"),
                ]
                for url in candidates {
                    try? FileManager.default.removeItem(at: url)
                }
            }
            do {
                return try ModelContainer(for: schema, configurations: [configuration])
            } catch {
                fatalError("Could not create ModelContainer: \(error)")
            }
        }
    }()

    var body: some Scene {
        WindowGroup {
            RootSplitView()
                .onAppear {
                    CourseStore(modelContext: sharedModelContainer.mainContext).migrateIfNeeded()
                }
        }
        .modelContainer(sharedModelContainer)
    }
}
