// // glossApp.swift // gloss // // Created by Saint on 10/23/22. // import GRDBQuery import SwiftUI @main struct glossApp: App { var body: some Scene { WindowGroup { ContentView() .environment(\.appDatabase, .shared) } } } // MARK: - Give SwiftUI access to the database // // Define a new environment key that grants access to an AppDatabase. // // The technique is documented at // . private struct AppDatabaseKey: EnvironmentKey { static var defaultValue: AppDatabase { .empty() } } extension EnvironmentValues { var appDatabase: AppDatabase { get { self[AppDatabaseKey.self] } set { self[AppDatabaseKey.self] = newValue } } } // In this demo app, views observe the database with the @Query property // wrapper, defined in the GRDBQuery package. Its documentation recommends to // define a dedicated initializer for `appDatabase` access, so we comply: extension Query where Request.DatabaseContext == AppDatabase { /// Convenience initializer for requests that feed from `AppDatabase`. init(_ request: Request) { self.init(request, in: \.appDatabase) } }