defer db.Close and yaml writes to disk if $W

master
bel 2023-04-04 20:10:30 -06:00
parent 6cf8e06dcb
commit 3c47bc4b60
2 changed files with 20 additions and 0 deletions

View File

@ -19,6 +19,7 @@ type (
LastAnswer(string, string) (string, Answer)
Answer(string) Answer
PushAnswer(string, string, string, bool) error
Close()
}
Question struct {
Q string
@ -49,6 +50,7 @@ func Main() error {
if err != nil {
return err
}
defer db.Close()
user := os.Getenv("USER")
for q, _ := range db.HistoryOf(user) {
if time.Until(db.Next(user, q)) > 0 {

View File

@ -10,6 +10,7 @@ import (
type (
yamlDB struct {
addr string
Knowledge knowledge
Users map[string]user
Cadence []duration
@ -29,6 +30,7 @@ type (
func newYamlDB(p string) (yamlDB, error) {
db := yamlDB{
addr: p,
Knowledge: knowledge{
Questions: map[string]Question{},
Answers: map[string]Answer{},
@ -44,6 +46,22 @@ func newYamlDB(p string) (yamlDB, error) {
return db, nil
}
func (db yamlDB) Close() {
if os.Getenv("W") == "" {
return
}
b, err := yaml.Marshal(db)
if err != nil {
panic(err)
}
if err := os.Rename(db.addr, db.addr+".bak"); err != nil {
panic(err)
}
if err := os.WriteFile(db.addr, b, os.ModePerm); err != nil {
panic(err)
}
}
func (db yamlDB) HistoryOf(user string) map[string][]History {
result := map[string][]History{}
for k, v := range db.Users[user].History {