Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion Package.resolved

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

12 changes: 11 additions & 1 deletion Package.swift
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,11 @@ let package = Package(
.trait(
name: "SQLiteDataTagged",
description: "Introduce SQLiteData conformances to the swift-tagged package."
)
),
.trait(
name: "SQLiteDataSwiftLog",
description: "Use swift-log instead of OSLog for logging."
),
],
dependencies: [
.package(url: "https://github.com/apple/swift-collections", from: "1.0.0"),
Expand All @@ -44,6 +48,7 @@ let package = Package(
),
.package(url: "https://github.com/pointfreeco/swift-tagged", from: "0.10.0"),
.package(url: "https://github.com/pointfreeco/xctest-dynamic-overlay", from: "1.5.0"),
.package(url: "https://github.com/apple/swift-log", from: "1.6.0")
],
targets: [
.target(
Expand All @@ -62,6 +67,11 @@ let package = Package(
package: "swift-tagged",
condition: .when(traits: ["SQLiteDataTagged"])
),
.product(
name: "Logging",
package: "swift-log",
condition: .when(traits: ["SQLiteDataSwiftLog"])
)
]
),
.target(
Expand Down
63 changes: 61 additions & 2 deletions Sources/SQLiteData/CloudKit/Internal/Logging.swift
Original file line number Diff line number Diff line change
@@ -1,10 +1,47 @@
#if DEBUG && canImport(CloudKit)
#if canImport(CloudKit)

#if SQLiteDataSwiftLog
@_exported import struct Logging.Logger
import protocol Logging.LogHandler

@available(iOS 17, macOS 14, tvOS 17, watchOS 10, *)
extension SyncEngine {
public typealias Logger = Logging.Logger
}

@available(iOS 17, macOS 14, tvOS 17, watchOS 10, *)
extension SyncEngine.Logger {
public static var `default`: SyncEngine.Logger {
.init(label: "SQLiteData")
}
public static var disabled: SyncEngine.Logger {
.init(label: "SQLiteData") { _ in DisabledLogHandler() }
}
}
#else
@_exported import struct os.Logger
@available(iOS 17, macOS 14, tvOS 17, watchOS 10, *)
extension SyncEngine {
public typealias Logger = os.Logger
}
@available(iOS 17, macOS 14, tvOS 17, watchOS 10, *)
extension SyncEngine.Logger {
public static var `default`: SyncEngine.Logger {
.init(subsystem: "SQLiteData", category: "CloudKit")
}
public static var disabled: SyncEngine.Logger {
.init(.disabled)
}
}
#endif

#if DEBUG
import CloudKit
import TabularData
import os

@available(iOS 17, macOS 14, tvOS 17, watchOS 10, *)
extension Logger {
extension SyncEngine.Logger {
func log(_ event: SyncEngine.Event, syncEngine: any SyncEngineProtocol) {
let prefix = "SQLiteData (\(syncEngine.database.databaseScope.label).db)"
var actions: [String] = []
Expand Down Expand Up @@ -302,3 +339,25 @@
}
}
#endif

#if SQLiteDataSwiftLog
struct DisabledLogHandler: Logging.LogHandler {
var logLevel: Logging.Logger.Level = .info
var metadata: Logging.Logger.Metadata = [:]
subscript(metadataKey key: String) -> Logging.Logger.Metadata.Value? {
get { self.metadata[key] }
set { self.metadata[key] = newValue }
}
func log(
level: Logging.Logger.Level,
message: Logging.Logger.Message,
metadata: Logging.Logger.Metadata?,
source: String,
file: String,
function: String,
line: UInt
) {}
}
#endif

#endif
4 changes: 1 addition & 3 deletions Sources/SQLiteData/CloudKit/SyncEngine.swift
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,6 @@
import ConcurrencyExtras
import Dependencies
import OrderedCollections
import OSLog
import Observation
import StructuredQueriesCore
import SwiftData
Expand Down Expand Up @@ -90,8 +89,7 @@
defaultZone: CKRecordZone = CKRecordZone(zoneName: "co.pointfree.SQLiteData.defaultZone"),
startImmediately: Bool = true,
delegate: (any SyncEngineDelegate)? = nil,
logger: Logger = isTesting
? Logger(.disabled) : Logger(subsystem: "SQLiteData", category: "CloudKit")
logger: Logger = isTesting ? Logger.disabled : Logger.default
) throws
where
repeat (each T1).PrimaryKey.QueryOutput: IdentifierStringConvertible,
Expand Down
2 changes: 1 addition & 1 deletion Tests/SQLiteDataTests/Internal/BaseCloudKitTests.swift
Original file line number Diff line number Diff line change
Expand Up @@ -218,7 +218,7 @@ extension SyncEngine {
)
},
userDatabase: userDatabase,
logger: Logger(.disabled),
logger: Logger.disabled,
delegate: delegate,
tables: tables,
privateTables: privateTables
Expand Down