BasalProfileEntry.swift 872 B

123456789101112131415161718192021222324252627282930313233
  1. import Foundation
  2. struct BasalProfileEntry: JSON, Equatable {
  3. let start: String
  4. let minutes: Int
  5. let rate: Decimal
  6. }
  7. protocol BasalProfileObserver {
  8. func basalProfileDidChange(_ basalProfile: [BasalProfileEntry])
  9. }
  10. extension BasalProfileEntry {
  11. private enum CodingKeys: String, CodingKey {
  12. case start
  13. case minutes
  14. case rate
  15. }
  16. var displayTime: String {
  17. String(start.prefix(5))
  18. }
  19. init(from decoder: Decoder) throws {
  20. let container = try decoder.container(keyedBy: CodingKeys.self)
  21. let start = try container.decode(String.self, forKey: .start)
  22. let minutes = try container.decode(Int.self, forKey: .minutes)
  23. let rate = try container.decode(Double.self, forKey: .rate).decimal ?? .zero
  24. self = BasalProfileEntry(start: start, minutes: minutes, rate: rate)
  25. }
  26. }