aboutsummaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
authorMiquel Sabaté Solà <mikisabate@gmail.com>2025-06-13 08:11:46 +0200
committerMiquel Sabaté Solà <mikisabate@gmail.com>2025-06-13 08:11:46 +0200
commit9549858c7525d3a330d49bd1f8e353d8a9d6eb96 (patch)
tree37e558382be911bc1e6620b0c6d4634db7879b20 /lib
parent8c5e5dd0e0aae161c4943e7ff4fe0c93be1c8fb2 (diff)
downloadmihi-9549858c7525d3a330d49bd1f8e353d8a9d6eb96.tar.gz
mihi-9549858c7525d3a330d49bd1f8e353d8a9d6eb96.zip
Add steps into words
This is a way to make more granular the accounting of successful runs, so we don't give a word for done until we have run it successfully at least MAX_STEPS times in a row. Signed-off-by: Miquel Sabaté Solà <mikisabate@gmail.com>
Diffstat (limited to 'lib')
-rw-r--r--lib/mihi/src/lib.rs13
1 files changed, 9 insertions, 4 deletions
diff --git a/lib/mihi/src/lib.rs b/lib/mihi/src/lib.rs
index e464549..0a3c2f7 100644
--- a/lib/mihi/src/lib.rs
+++ b/lib/mihi/src/lib.rs
@@ -222,6 +222,7 @@ pub struct Word {
pub suffix: Option<String>,
pub translation: Value,
pub succeeded: usize,
+ pub steps: usize,
}
pub fn select_enunciated(filter: Option<String>) -> Result<Vec<String>, String> {
@@ -257,7 +258,8 @@ pub fn select_random_words(category: Category, number: usize) -> Result<Vec<Word
let mut stmt = conn
.prepare(
"SELECT id, enunciated, particle, language_id, declension_id, conjugation_id, \
- kind, category, regular, locative, gender, suffix, translation, succeeded \
+ kind, category, regular, locative, gender, suffix, translation, \
+ succeeded, steps \
FROM words \
WHERE category = ?1 AND translation != '{}' \
ORDER BY succeeded ASC, updated_at DESC
@@ -283,17 +285,20 @@ pub fn select_random_words(category: Category, number: usize) -> Result<Vec<Word
suffix: row.get(11).unwrap(),
translation: serde_json::from_str(&row.get::<usize, String>(12).unwrap()).unwrap(),
succeeded: row.get(13).unwrap(),
+ steps: row.get(14).unwrap(),
});
}
Ok(res)
}
-pub fn update_success(word: &Word, success: usize) -> Result<(), String> {
+pub fn update_success(word: &Word, success: usize, steps: usize) -> Result<(), String> {
let conn = get_connection()?;
match conn.execute(
- "UPDATE words SET succeeded = ?1, updated_at = datetime('now') WHERE id = ?2",
- params![success, word.id],
+ "UPDATE words \
+ SET succeeded = ?1, steps = ?2, updated_at = datetime('now') \
+ WHERE id = ?3",
+ params![success, steps, word.id],
) {
Ok(_) => Ok(()),
Err(e) => return Err(format!("could not update '{}': {}", word.enunciated, e)),