SyncCarbObject.swift 3.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889
  1. //
  2. // SyncCarbObject.swift
  3. // LoopKit
  4. //
  5. // Created by Darin Krauss on 8/10/20.
  6. // Copyright © 2020 LoopKit Authors. All rights reserved.
  7. //
  8. import Foundation
  9. import HealthKit
  10. public enum Operation: Int, CaseIterable, Codable {
  11. case create
  12. case update
  13. case delete
  14. }
  15. public struct SyncCarbObject: Codable, Equatable {
  16. public let absorptionTime: TimeInterval?
  17. public let createdByCurrentApp: Bool
  18. public let foodType: String?
  19. public let grams: Double
  20. public let startDate: Date
  21. public let uuid: UUID?
  22. public let provenanceIdentifier: String?
  23. public let syncIdentifier: String?
  24. public let syncVersion: Int?
  25. public let userCreatedDate: Date?
  26. public let userUpdatedDate: Date?
  27. public let userDeletedDate: Date?
  28. public let operation: Operation
  29. public let addedDate: Date?
  30. public let supercededDate: Date?
  31. public init(absorptionTime: TimeInterval?,
  32. createdByCurrentApp: Bool,
  33. foodType: String?,
  34. grams: Double,
  35. startDate: Date,
  36. uuid: UUID?,
  37. provenanceIdentifier: String?,
  38. syncIdentifier: String?,
  39. syncVersion: Int?,
  40. userCreatedDate: Date?,
  41. userUpdatedDate: Date?,
  42. userDeletedDate: Date?,
  43. operation: Operation,
  44. addedDate: Date?,
  45. supercededDate: Date?) {
  46. self.absorptionTime = absorptionTime
  47. self.createdByCurrentApp = createdByCurrentApp
  48. self.foodType = foodType
  49. self.grams = grams
  50. self.startDate = startDate
  51. self.uuid = uuid
  52. self.provenanceIdentifier = provenanceIdentifier
  53. self.syncIdentifier = syncIdentifier
  54. self.syncVersion = syncVersion
  55. self.userCreatedDate = userCreatedDate
  56. self.userUpdatedDate = userUpdatedDate
  57. self.userDeletedDate = userDeletedDate
  58. self.operation = operation
  59. self.addedDate = addedDate
  60. self.supercededDate = supercededDate
  61. }
  62. public var quantity: HKQuantity { HKQuantity(unit: .gram(), doubleValue: grams) }
  63. }
  64. extension SyncCarbObject {
  65. init(managedObject: CachedCarbObject) {
  66. self.init(absorptionTime: managedObject.absorptionTime,
  67. createdByCurrentApp: managedObject.createdByCurrentApp,
  68. foodType: managedObject.foodType,
  69. grams: managedObject.grams,
  70. startDate: managedObject.startDate,
  71. uuid: managedObject.uuid,
  72. provenanceIdentifier: managedObject.provenanceIdentifier,
  73. syncIdentifier: managedObject.syncIdentifier,
  74. syncVersion: managedObject.syncVersion,
  75. userCreatedDate: managedObject.userCreatedDate,
  76. userUpdatedDate: managedObject.userUpdatedDate,
  77. userDeletedDate: managedObject.userDeletedDate,
  78. operation: managedObject.operation,
  79. addedDate: managedObject.addedDate,
  80. supercededDate: managedObject.supercededDate)
  81. }
  82. }