TempTarget.swift 1.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263
  1. import Foundation
  2. struct TempTarget: JSON, Identifiable, Equatable, Hashable {
  3. var id = UUID().uuidString
  4. let name: String?
  5. var createdAt: Date
  6. let targetTop: Decimal?
  7. let targetBottom: Decimal?
  8. let duration: Decimal
  9. let enteredBy: String?
  10. let reason: String?
  11. let isPreset: Bool?
  12. let enabled: Bool?
  13. let halfBasalTarget: Decimal?
  14. static let manual = "Trio"
  15. static let custom = "Temp target"
  16. static let cancel = "Cancel"
  17. var displayName: String {
  18. name ?? reason ?? TempTarget.custom
  19. }
  20. static func == (lhs: TempTarget, rhs: TempTarget) -> Bool {
  21. lhs.createdAt == rhs.createdAt
  22. }
  23. func hash(into hasher: inout Hasher) {
  24. hasher.combine(createdAt)
  25. }
  26. static func cancel(at date: Date) -> TempTarget {
  27. TempTarget(
  28. name: TempTarget.cancel,
  29. createdAt: date,
  30. targetTop: 0,
  31. targetBottom: 0,
  32. duration: 0,
  33. enteredBy: TempTarget.manual,
  34. reason: TempTarget.cancel,
  35. isPreset: nil,
  36. enabled: nil,
  37. halfBasalTarget: 160
  38. )
  39. }
  40. }
  41. extension TempTarget {
  42. private enum CodingKeys: String, CodingKey {
  43. case id = "_id"
  44. case name
  45. case createdAt = "created_at"
  46. case targetTop
  47. case targetBottom
  48. case duration
  49. case enteredBy
  50. case reason
  51. case isPreset
  52. case enabled
  53. case halfBasalTarget
  54. }
  55. }