Db layers #14

Merged
micialware merged 7 commits from db_layers into master 2026-08-30 23:38:33 +03:00
2 changed files with 9 additions and 9 deletions
Showing only changes of commit c9ccacc2d1 - Show all commits

No files matched your search

+8 -8
View File
@@ -11,7 +11,7 @@ use std::time::Instant;
pub struct CardStatesQuerySet; pub struct CardStatesQuerySet;
impl TableAccessQuerySet<CardState> for CardStatesQuerySet { impl TableAccessQuerySet<CardState> for CardStatesQuerySet {
fn load() -> &'static str { fn load() -> &'static str {
"INSERT INTO states (word_id, set_id, score, last_opened, fsrs_opened, fsrs_memory, fsrs_open_day) VALUES (?1, ?2, ?3, ?4)" "SELECT id, word_id, set_id, score, last_opened, fsrs_opened, fsrs_memory, fsrs_open_day FROM states"
} }
fn save() -> &'static str { fn save() -> &'static str {
@@ -19,7 +19,7 @@ impl TableAccessQuerySet<CardState> for CardStatesQuerySet {
} }
fn add() -> &'static str { fn add() -> &'static str {
todo!() "INSERT INTO states (word_id, set_id, score, last_opened, fsrs_opened, fsrs_memory, fsrs_open_day) VALUES (?1, ?2, ?3, ?4)"
} }
fn name() -> &'static str { fn name() -> &'static str {
@@ -30,13 +30,13 @@ impl TableAccessQuerySet<CardState> for CardStatesQuerySet {
Ok(CardState { Ok(CardState {
id: row.get(0)?, id: row.get(0)?,
word_id: row.get(1)?, word_id: row.get(1)?,
set_id: set.id, set_id: row.get(2)?,
score: row.get(2)?, score: row.get(3)?,
fsrs_opened: NaiveDate::from_epoch_days(row.get::<usize, i32>(4)?) fsrs_opened: NaiveDate::from_epoch_days(row.get::<usize, i32>(5)?)
.expect("Incorrect date encoding"), .expect("Incorrect date encoding"),
fsrs_memory: get_memory(row.get(5)?), fsrs_memory: get_memory(row.get(6)?),
last_open: row.get(3)?, last_open: row.get(4)?,
fsrs_open_day: NaiveDate::from_epoch_days(row.get::<usize, i32>(6)?) fsrs_open_day: NaiveDate::from_epoch_days(row.get::<usize, i32>(7)?)
.expect("Incorrect date encoding"), .expect("Incorrect date encoding"),
}) })
} }
+1 -1
View File
@@ -70,7 +70,7 @@ impl<T: EntityData, Q: TableAccessQuerySet<T>> DbLayer<T> for SqliteDbLayer<T, Q
.prepare(Q::load()) .prepare(Q::load())
.expect("Failed to prepare state query"); .expect("Failed to prepare state query");
let iter = stmt let iter = stmt
.query_map([], |row| Ok(Q::from_sql(row))) .query_map([], |row| Ok(Q::from_sql(row)?))
.map_err(|_| DbLoadError)?; .map_err(|_| DbLoadError)?;
iter.filter_map(|res| res.ok()) iter.filter_map(|res| res.ok())