48 lines
1.2 KiB
Swift
48 lines
1.2 KiB
Swift
//
|
|
// 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
|
|
// <https://developer.apple.com/documentation/swiftui/environmentkey>.
|
|
|
|
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)
|
|
}
|
|
}
|