TempTarget.swift 1.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354
  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. static let manual = "iAPS"
  12. static let custom = "Temp target"
  13. static let cancel = "Cancel"
  14. var displayName: String {
  15. name ?? reason ?? TempTarget.custom
  16. }
  17. static func == (lhs: TempTarget, rhs: TempTarget) -> Bool {
  18. lhs.createdAt == rhs.createdAt
  19. }
  20. func hash(into hasher: inout Hasher) {
  21. hasher.combine(createdAt)
  22. }
  23. static func cancel(at date: Date) -> TempTarget {
  24. TempTarget(
  25. name: TempTarget.cancel,
  26. createdAt: date,
  27. targetTop: 0,
  28. targetBottom: 0,
  29. duration: 0,
  30. enteredBy: TempTarget.manual,
  31. reason: TempTarget.cancel
  32. )
  33. }
  34. }
  35. extension TempTarget {
  36. private enum CodingKeys: String, CodingKey {
  37. case id = "_id"
  38. case name
  39. case createdAt = "created_at"
  40. case targetTop
  41. case targetBottom
  42. case duration
  43. case enteredBy
  44. case reason
  45. }
  46. }