mirror of
https://github.com/ankitects/anki.git
synced 2026-01-14 06:23:57 -05:00
./check
This commit is contained in:
parent
8282a1ec55
commit
f51e91447d
3 changed files with 20 additions and 11 deletions
|
|
@ -103,7 +103,8 @@ impl crate::services::DeckConfigService for Collection {
|
|||
) -> Result<anki_proto::deck_config::GetRetentionWorkloadResponse> {
|
||||
const LEARN_SPAN: usize = 1000;
|
||||
|
||||
let guard = self.search_cards_into_table(&input.search, crate::search::SortMode::NoOrder)?;
|
||||
let guard =
|
||||
self.search_cards_into_table(&input.search, crate::search::SortMode::NoOrder)?;
|
||||
let (pass_cost, fail_cost, learn_cost) = guard.col.storage.get_costs_for_retention()?;
|
||||
|
||||
let before = fsrs::expected_workload(
|
||||
|
|
|
|||
|
|
@ -1,12 +1,10 @@
|
|||
WITH searched_revlogs AS (
|
||||
SELECT *
|
||||
FROM revlog
|
||||
WHERE cid in search_cids
|
||||
ORDER BY id DESC
|
||||
-- Use the last 10000 cards
|
||||
WHERE cid IN search_cids
|
||||
ORDER BY id DESC -- Use the last 10000 cards
|
||||
LIMIT 10000
|
||||
),
|
||||
average_pass AS (
|
||||
), average_pass AS (
|
||||
SELECT AVG(time)
|
||||
FROM searched_revlogs
|
||||
WHERE ease > 1
|
||||
|
|
@ -18,7 +16,8 @@ average_fail AS (
|
|||
),
|
||||
-- Can lead to cards with partial learn histories skewing the time
|
||||
summed_learns AS (
|
||||
SELECT cid, SUM(time) AS total_time
|
||||
SELECT cid,
|
||||
SUM(time) AS total_time
|
||||
FROM searched_revlogs
|
||||
WHERE searched_revlogs.type = 0
|
||||
GROUP BY cid
|
||||
|
|
@ -27,4 +26,7 @@ average_learn AS (
|
|||
SELECT AVG(total_time) AS avg_learn_time
|
||||
FROM summed_learns
|
||||
)
|
||||
SELECT * FROM average_pass, average_fail, average_learn;
|
||||
SELECT *
|
||||
FROM average_pass,
|
||||
average_fail,
|
||||
average_learn;
|
||||
|
|
@ -747,12 +747,18 @@ impl super::SqliteStorage {
|
|||
.get(0)?)
|
||||
}
|
||||
|
||||
pub(crate) fn get_costs_for_retention(&self) -> Result<(f32, f32, f32)>{
|
||||
let mut statement = self.db.prepare(include_str!("get_costs_for_retention.sql"))?;
|
||||
pub(crate) fn get_costs_for_retention(&self) -> Result<(f32, f32, f32)> {
|
||||
let mut statement = self
|
||||
.db
|
||||
.prepare(include_str!("get_costs_for_retention.sql"))?;
|
||||
let mut query = statement.query(params![])?;
|
||||
let row = query.next()?.unwrap();
|
||||
|
||||
Ok((row.get(0).unwrap_or(7000.), row.get(1).unwrap_or(23_000.), row.get(2).unwrap_or(30_000.)))
|
||||
Ok((
|
||||
row.get(0).unwrap_or(7000.),
|
||||
row.get(1).unwrap_or(23_000.),
|
||||
row.get(2).unwrap_or(30_000.),
|
||||
))
|
||||
}
|
||||
|
||||
#[cfg(test)]
|
||||
|
|
|
|||
Loading…
Reference in a new issue