50 lines
1.2 KiB
Go
50 lines
1.2 KiB
Go
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,
|
|
}
|
|
}
|
|
|
|
// Record holds a pointer to a Reading or Note.
|
|
type Record struct {
|
|
Reading *Reading `json:"reading,omitempty"`
|
|
Note *Note `json:"note,omitempty"`
|
|
}
|