defer db.Close and yaml writes to disk if $W
parent
6cf8e06dcb
commit
3c47bc4b60
2
main.go
2
main.go
|
|
@ -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 {
|
||||
|
|
|
|||
18
yamldb.go
18
yamldb.go
|
|
@ -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 {
|
||||
|
|
|
|||
Loading…
Reference in New Issue