last answer returns ID and is actually the last by TS

master
bel 2023-04-04 19:41:31 -06:00
parent 990733200f
commit 1e9daf2398
4 changed files with 29 additions and 10 deletions

BIN
anki.d

Binary file not shown.

18
main.go
View File

@ -16,7 +16,7 @@ type (
HistoryOf(string) map[string][]History
Next(string, string) time.Time
Question(string) Question
LastAnswer(string, string) Answer
LastAnswer(string, string) (string, Answer)
Answer(string) Answer
PushAnswer(string, string, string, bool) error
}
@ -76,14 +76,22 @@ func Main() error {
if len(question.Clues) == 0 || response == "/clue" {
response = readline()
}
if lastAnswer := db.Answer(db.LastAnswer(user, q).A); lastAnswer.A != "" {
if id, _ := db.LastAnswer(user, q); id == "" {
} else if lastAnswer := db.Answer(id); lastAnswer.A != "" {
fmt.Printf("> Last time, you responded:\n\t%s\n", lastAnswer.A)
}
fmt.Printf("> Did you pass this time? [Yn] ")
pass := readline() == "n"
if err := db.PushAnswer(user, q, response, pass); err != nil {
fmt.Printf("> Did you pass this time? [Yns]\n")
switch readline() {
case "s":
case "n":
if err := db.PushAnswer(user, q, response, false); err != nil {
return err
}
default:
if err := db.PushAnswer(user, q, response, true); err != nil {
return err
}
}
fmt.Println()
}
if b, _ := yaml.Marshal(db); len(b) > 0 {

View File

@ -14,10 +14,16 @@ knowledge:
a: a schema
ts: 123
author: breel
uuid0:
q: uuid1
a: not a schema
ts: 122
author: breel
users:
breel:
history:
uuid1:
- {a: uuid0, pass: true}
- {a: uuid2, pass: true}
cadence:
- 1d

View File

@ -47,13 +47,18 @@ func (db yamlDB) Question(q string) Question {
return db.Knowledge.Questions[q]
}
func (db yamlDB) LastAnswer(user, q string) Answer {
for _, v := range db.Knowledge.Answers {
func (db yamlDB) LastAnswer(user, q string) (string, Answer) {
maxk := ""
var maxv Answer
for k, v := range db.Knowledge.Answers {
if v.Q == q && v.Author == user {
return v
if maxv.TS < v.TS {
maxk = k
maxv = v
}
}
return Answer{}
}
return maxk, maxv
}
func (db yamlDB) Answer(a string) Answer {