Decode lap length
This commit is contained in:
parent
5daf92c5bb
commit
3029d94031
@ -1,5 +1,6 @@
|
|||||||
import Foundation
|
import Foundation
|
||||||
import SQLite
|
import SQLite
|
||||||
|
import HealthKit
|
||||||
|
|
||||||
extension WorkoutActivity {
|
extension WorkoutActivity {
|
||||||
|
|
||||||
@ -33,7 +34,7 @@ extension WorkoutActivity {
|
|||||||
try database.prepare(table).map(from)
|
try database.prepare(table).map(from)
|
||||||
}
|
}
|
||||||
|
|
||||||
private static func from(row: Row) -> WorkoutActivity {
|
private static func from(row: Row) throws -> WorkoutActivity {
|
||||||
.init(
|
.init(
|
||||||
id: row[columnId],
|
id: row[columnId],
|
||||||
uuid: row[columnUUID],
|
uuid: row[columnUUID],
|
||||||
@ -41,7 +42,7 @@ extension WorkoutActivity {
|
|||||||
activityType: .init(rawValue: UInt(row[columnActivityType]))!,
|
activityType: .init(rawValue: UInt(row[columnActivityType]))!,
|
||||||
locationType: .init(rawValue: row[columnLocationType])!,
|
locationType: .init(rawValue: row[columnLocationType])!,
|
||||||
swimmingLocationType: .init(rawValue: row[columnSwimmingLocationType])!,
|
swimmingLocationType: .init(rawValue: row[columnSwimmingLocationType])!,
|
||||||
lapLength: row[columnLapLength],
|
lapLength: try row[columnLapLength].map(lapLength),
|
||||||
startDate: Date(timeIntervalSinceReferenceDate: row[columnStartDate]),
|
startDate: Date(timeIntervalSinceReferenceDate: row[columnStartDate]),
|
||||||
endDate: Date(timeIntervalSinceReferenceDate: row[columnEndDate]),
|
endDate: Date(timeIntervalSinceReferenceDate: row[columnEndDate]),
|
||||||
duration: row[columnDuration],
|
duration: row[columnDuration],
|
||||||
@ -82,12 +83,22 @@ extension WorkoutActivity {
|
|||||||
columnActivityType <- Int(element.activityType.rawValue),
|
columnActivityType <- Int(element.activityType.rawValue),
|
||||||
columnLocationType <- element.locationType.rawValue,
|
columnLocationType <- element.locationType.rawValue,
|
||||||
columnSwimmingLocationType <- element.swimmingLocationType.rawValue,
|
columnSwimmingLocationType <- element.swimmingLocationType.rawValue,
|
||||||
columnLapLength <- element.lapLength,
|
columnLapLength <- try element.lapLengthData(),
|
||||||
columnStartDate <- element.startDate.timeIntervalSinceReferenceDate,
|
columnStartDate <- element.startDate.timeIntervalSinceReferenceDate,
|
||||||
columnEndDate <- element.endDate.timeIntervalSinceReferenceDate,
|
columnEndDate <- element.endDate.timeIntervalSinceReferenceDate,
|
||||||
columnDuration <- element.duration,
|
columnDuration <- element.duration,
|
||||||
columnMetadata <- element.metadata)
|
columnMetadata <- element.metadata)
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private extension WorkoutActivity {
|
||||||
|
|
||||||
|
func lapLengthData() throws -> Data? {
|
||||||
|
try lapLength.map { try NSKeyedArchiver.archivedData(withRootObject: $0, requiringSecureCoding: false) }
|
||||||
|
}
|
||||||
|
|
||||||
|
static func lapLength(from data: Data) throws -> HKQuantity? {
|
||||||
|
try NSKeyedUnarchiver.unarchivedObject(ofClass: HKQuantity.self, from: data)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -15,8 +15,8 @@ struct WorkoutActivity {
|
|||||||
|
|
||||||
let swimmingLocationType: HKWorkoutSwimmingLocationType
|
let swimmingLocationType: HKWorkoutSwimmingLocationType
|
||||||
|
|
||||||
let lapLength: Data?
|
let lapLength: HKQuantity?
|
||||||
|
|
||||||
#warning("Fix timezone for dates")
|
#warning("Fix timezone for dates")
|
||||||
let startDate: Date
|
let startDate: Date
|
||||||
|
|
||||||
@ -26,7 +26,7 @@ struct WorkoutActivity {
|
|||||||
|
|
||||||
let metadata: Data?
|
let metadata: Data?
|
||||||
|
|
||||||
init(id: Int, uuid: Data, isPrimaryActivity: Bool, activityType: HKWorkoutActivityType, locationType: HKWorkoutSessionLocationType, swimmingLocationType: HKWorkoutSwimmingLocationType, lapLength: Data?, startDate: Date, endDate: Date, duration: TimeInterval, metadata: Data?) {
|
init(id: Int, uuid: Data, isPrimaryActivity: Bool, activityType: HKWorkoutActivityType, locationType: HKWorkoutSessionLocationType, swimmingLocationType: HKWorkoutSwimmingLocationType, lapLength: HKQuantity?, startDate: Date, endDate: Date, duration: TimeInterval, metadata: Data?) {
|
||||||
self.id = id
|
self.id = id
|
||||||
self.uuid = uuid
|
self.uuid = uuid
|
||||||
self.isPrimaryActivity = isPrimaryActivity
|
self.isPrimaryActivity = isPrimaryActivity
|
||||||
|
Loading…
Reference in New Issue
Block a user