data package handles AppContext and Records
This commit is contained in:
parent
7aa3760711
commit
3ae5ea780e
46
data/records.go
Normal file
46
data/records.go
Normal file
@ -0,0 +1,46 @@
|
||||
package data
|
||||
|
||||
import (
|
||||
"encoding/json"
|
||||
"ketotrack/model"
|
||||
"os"
|
||||
)
|
||||
|
||||
// Record holds a pointer to a Reading or Note.
|
||||
type Record struct {
|
||||
Reading *model.Reading `json:"reading,omitempty"`
|
||||
Note *model.Note `json:"note,omitempty"`
|
||||
}
|
||||
|
||||
// AppContext is the application data store that holds Records
|
||||
type AppContext struct {
|
||||
Records []Record
|
||||
}
|
||||
|
||||
// LoadRecords will load records from file
|
||||
func (ctx *AppContext) LoadRecords(filename string) error {
|
||||
data, err := os.ReadFile(filename)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
return json.Unmarshal(data, &ctx.Records)
|
||||
}
|
||||
|
||||
// SaveRecords will save records to a file
|
||||
func (ctx *AppContext) SaveRecords(filename string) error {
|
||||
jsonData, err := json.Marshal(ctx.Records)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
return os.WriteFile(filename, jsonData, 0660)
|
||||
}
|
||||
|
||||
// AddReading will add a Reading to the AppContext
|
||||
func (ctx *AppContext) AddReading(reading model.Reading) {
|
||||
ctx.Records = append(ctx.Records, Record{Reading: &reading})
|
||||
}
|
||||
|
||||
// AddNote will a add a Note to the AppContext
|
||||
func (ctx *AppContext) AddNote(note model.Note) {
|
||||
ctx.Records = append(ctx.Records, Record{Note: ¬e})
|
||||
}
|
Loading…
Reference in New Issue
Block a user