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)
|
LastAnswer(string, string) (string, Answer)
|
||||||
Answer(string) Answer
|
Answer(string) Answer
|
||||||
PushAnswer(string, string, string, bool) error
|
PushAnswer(string, string, string, bool) error
|
||||||
|
Close()
|
||||||
}
|
}
|
||||||
Question struct {
|
Question struct {
|
||||||
Q string
|
Q string
|
||||||
|
|
@ -49,6 +50,7 @@ func Main() error {
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
defer db.Close()
|
||||||
user := os.Getenv("USER")
|
user := os.Getenv("USER")
|
||||||
for q, _ := range db.HistoryOf(user) {
|
for q, _ := range db.HistoryOf(user) {
|
||||||
if time.Until(db.Next(user, q)) > 0 {
|
if time.Until(db.Next(user, q)) > 0 {
|
||||||
|
|
|
||||||
18
yamldb.go
18
yamldb.go
|
|
@ -10,6 +10,7 @@ import (
|
||||||
|
|
||||||
type (
|
type (
|
||||||
yamlDB struct {
|
yamlDB struct {
|
||||||
|
addr string
|
||||||
Knowledge knowledge
|
Knowledge knowledge
|
||||||
Users map[string]user
|
Users map[string]user
|
||||||
Cadence []duration
|
Cadence []duration
|
||||||
|
|
@ -29,6 +30,7 @@ type (
|
||||||
|
|
||||||
func newYamlDB(p string) (yamlDB, error) {
|
func newYamlDB(p string) (yamlDB, error) {
|
||||||
db := yamlDB{
|
db := yamlDB{
|
||||||
|
addr: p,
|
||||||
Knowledge: knowledge{
|
Knowledge: knowledge{
|
||||||
Questions: map[string]Question{},
|
Questions: map[string]Question{},
|
||||||
Answers: map[string]Answer{},
|
Answers: map[string]Answer{},
|
||||||
|
|
@ -44,6 +46,22 @@ func newYamlDB(p string) (yamlDB, error) {
|
||||||
return db, nil
|
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 {
|
func (db yamlDB) HistoryOf(user string) map[string][]History {
|
||||||
result := map[string][]History{}
|
result := map[string][]History{}
|
||||||
for k, v := range db.Users[user].History {
|
for k, v := range db.Users[user].History {
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue