to sm2 Next
parent
0bf775fbb6
commit
4d73543b17
|
|
@ -25,10 +25,3 @@ users:
|
||||||
uuid1:
|
uuid1:
|
||||||
- {a: uuid0, pass: true}
|
- {a: uuid0, pass: true}
|
||||||
- {a: uuid2, pass: true}
|
- {a: uuid2, pass: true}
|
||||||
cadence:
|
|
||||||
- 1d
|
|
||||||
- 3d
|
|
||||||
- 1w
|
|
||||||
- 3w
|
|
||||||
- 1m
|
|
||||||
- 3m
|
|
||||||
|
|
|
||||||
|
|
@ -12,12 +12,3 @@ users:
|
||||||
- hiragana
|
- hiragana
|
||||||
- katakana
|
- katakana
|
||||||
history: {}
|
history: {}
|
||||||
cadence:
|
|
||||||
- 1h
|
|
||||||
- 3h
|
|
||||||
- 1d
|
|
||||||
- 3d
|
|
||||||
- 1w
|
|
||||||
- 3w
|
|
||||||
- 1m
|
|
||||||
- 3m
|
|
||||||
|
|
|
||||||
20
yamldb.go
20
yamldb.go
|
|
@ -13,7 +13,6 @@ type (
|
||||||
addr string
|
addr string
|
||||||
Knowledge knowledge
|
Knowledge knowledge
|
||||||
Users map[IDU]user
|
Users map[IDU]user
|
||||||
Cadence []duration
|
|
||||||
}
|
}
|
||||||
knowledge struct {
|
knowledge struct {
|
||||||
Questions map[IDQ]Question
|
Questions map[IDQ]Question
|
||||||
|
|
@ -35,8 +34,7 @@ func newYamlDB(p string) (yamlDB, error) {
|
||||||
Questions: map[IDQ]Question{},
|
Questions: map[IDQ]Question{},
|
||||||
Answers: map[IDA]Answer{},
|
Answers: map[IDA]Answer{},
|
||||||
},
|
},
|
||||||
Users: map[IDU]user{},
|
Users: map[IDU]user{},
|
||||||
Cadence: []duration{},
|
|
||||||
}
|
}
|
||||||
if b, err := os.ReadFile(p); err != nil {
|
if b, err := os.ReadFile(p); err != nil {
|
||||||
return yamlDB{}, err
|
return yamlDB{}, err
|
||||||
|
|
@ -79,20 +77,16 @@ func (db yamlDB) HistoryOf(user IDU) map[IDQ][]History {
|
||||||
|
|
||||||
func (db yamlDB) Next(user IDU, q IDQ) time.Time {
|
func (db yamlDB) Next(user IDU, q IDQ) time.Time {
|
||||||
history := db.Users[user].History[q]
|
history := db.Users[user].History[q]
|
||||||
progress := 0
|
last := db.lastTS(user, q)
|
||||||
|
log := make([]int, 0, len(history))
|
||||||
for i := range history {
|
for i := range history {
|
||||||
|
v := 0
|
||||||
if history[i].Pass {
|
if history[i].Pass {
|
||||||
progress += 1
|
v = 5
|
||||||
} else {
|
|
||||||
progress -= 1
|
|
||||||
}
|
}
|
||||||
|
log = append(log, v)
|
||||||
}
|
}
|
||||||
if progress < 0 {
|
return Next(last, log)
|
||||||
progress = 0
|
|
||||||
} else if progress > len(db.Cadence) {
|
|
||||||
return time.Now().Add(time.Hour * 24 * 365 * 10)
|
|
||||||
}
|
|
||||||
return db.lastTS(user, q).Add(time.Duration(db.Cadence[progress]))
|
|
||||||
}
|
}
|
||||||
|
|
||||||
func (db yamlDB) Question(q IDQ) Question {
|
func (db yamlDB) Question(q IDQ) Question {
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue