CarbsEntry.swift 1.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162
  1. import Foundation
  2. import LoopKit
  3. struct CarbsEntry: JSON, Equatable, Hashable {
  4. let id: String?
  5. let createdAt: Date
  6. let carbs: Decimal
  7. let fat: Decimal?
  8. let protein: Decimal?
  9. let note: String?
  10. let enteredBy: String?
  11. let isFPU: Bool?
  12. let fpuID: String?
  13. static let manual = "Trio"
  14. static let appleHealth = "applehealth"
  15. static func == (lhs: CarbsEntry, rhs: CarbsEntry) -> Bool {
  16. lhs.createdAt == rhs.createdAt
  17. }
  18. func hash(into hasher: inout Hasher) {
  19. hasher.combine(createdAt)
  20. }
  21. }
  22. extension CarbsEntry {
  23. private enum CodingKeys: String, CodingKey {
  24. case id = "_id"
  25. case createdAt = "created_at"
  26. case carbs
  27. case fat
  28. case protein
  29. case note
  30. case enteredBy
  31. case isFPU
  32. case fpuID
  33. }
  34. }
  35. extension CarbsEntry {
  36. func convertSyncCarb(operation: LoopKit.Operation = .create) -> SyncCarbObject {
  37. SyncCarbObject(
  38. absorptionTime: nil,
  39. createdByCurrentApp: true,
  40. foodType: nil,
  41. grams: Double(carbs),
  42. startDate: createdAt,
  43. uuid: UUID(uuidString: id!),
  44. provenanceIdentifier: enteredBy ?? "",
  45. syncIdentifier: id,
  46. syncVersion: nil,
  47. userCreatedDate: nil,
  48. userUpdatedDate: nil,
  49. userDeletedDate: nil,
  50. operation: operation,
  51. addedDate: nil,
  52. supercededDate: nil
  53. )
  54. }
  55. }