CarbsEntry.swift 1.5 KB

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