diff --git a/model/types.go b/model/types.go new file mode 100644 index 0000000..9d3ed05 --- /dev/null +++ b/model/types.go @@ -0,0 +1,43 @@ +package model + +import "time" + +// Note holds a text note along with the time the note was taken. +type Note struct { + Time time.Time `json:"time"` + Text string `json:"text"` +} + +// NewNote returns a new Note +func NewNote(text string) Note { + return Note{ + Time: time.Now(), + Text: text, + } +} + +// Reading holds the glucose and ketone level measurements along with the time the measurements were taken. +type Reading struct { + Time time.Time `json:"time"` + Glucose float64 `json:"glucose"` + Ketone float64 `json:"ketone"` + GKI float64 `json:"GKI"` +} + +// NewReading creates and returns a new Reading instance with the provided glucose and ketone levels, and records +// the current time. The glucose value should be provided in mg/dL, while the ketone level should be in mmol/L. +func NewReading(glucose, ketone float64) Reading { + var gki float64 + if ketone == 0 { + gki = 0 + } else { + gki = (glucose / 18) / ketone + } + + return Reading{ + Time: time.Now(), + Glucose: glucose, + Ketone: ketone, + GKI: gki, + } +}