mirror of
https://github.com/ankitects/anki.git
synced 2025-12-13 06:46:55 -05:00
split decks into module
This commit is contained in:
parent
bb56e9bc20
commit
d3b27c302c
2 changed files with 28 additions and 21 deletions
27
rslib/src/decks/mod.rs
Normal file
27
rslib/src/decks/mod.rs
Normal file
|
|
@ -0,0 +1,27 @@
|
||||||
|
// Copyright: Ankitects Pty Ltd and contributors
|
||||||
|
// License: GNU AGPL, version 3 or later; http://www.gnu.org/licenses/agpl.html
|
||||||
|
|
||||||
|
use crate::define_newtype;
|
||||||
|
|
||||||
|
mod schema11;
|
||||||
|
pub use schema11::Deck;
|
||||||
|
|
||||||
|
define_newtype!(DeckID, i64);
|
||||||
|
|
||||||
|
pub(crate) fn child_ids<'a>(decks: &'a [Deck], name: &str) -> impl Iterator<Item = DeckID> + 'a {
|
||||||
|
let prefix = format!("{}::", name.to_ascii_lowercase());
|
||||||
|
decks
|
||||||
|
.iter()
|
||||||
|
.filter(move |d| d.name().to_ascii_lowercase().starts_with(&prefix))
|
||||||
|
.map(|d| d.id())
|
||||||
|
}
|
||||||
|
|
||||||
|
pub(crate) fn get_deck(decks: &[Deck], id: DeckID) -> Option<&Deck> {
|
||||||
|
for d in decks {
|
||||||
|
if d.id() == id {
|
||||||
|
return Some(d);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
None
|
||||||
|
}
|
||||||
|
|
@ -1,8 +1,8 @@
|
||||||
// Copyright: Ankitects Pty Ltd and contributors
|
// Copyright: Ankitects Pty Ltd and contributors
|
||||||
// License: GNU AGPL, version 3 or later; http://www.gnu.org/licenses/agpl.html
|
// License: GNU AGPL, version 3 or later; http://www.gnu.org/licenses/agpl.html
|
||||||
|
|
||||||
|
use super::DeckID;
|
||||||
use crate::{
|
use crate::{
|
||||||
define_newtype,
|
|
||||||
serde::{default_on_invalid, deserialize_bool_from_anything, deserialize_number_from_string},
|
serde::{default_on_invalid, deserialize_bool_from_anything, deserialize_number_from_string},
|
||||||
timestamp::TimestampSecs,
|
timestamp::TimestampSecs,
|
||||||
types::Usn,
|
types::Usn,
|
||||||
|
|
@ -12,8 +12,6 @@ use serde_json::Value;
|
||||||
use serde_tuple::Serialize_tuple;
|
use serde_tuple::Serialize_tuple;
|
||||||
use std::collections::HashMap;
|
use std::collections::HashMap;
|
||||||
|
|
||||||
define_newtype!(DeckID, i64);
|
|
||||||
|
|
||||||
#[derive(Serialize, PartialEq, Debug, Clone)]
|
#[derive(Serialize, PartialEq, Debug, Clone)]
|
||||||
#[serde(untagged)]
|
#[serde(untagged)]
|
||||||
pub enum Deck {
|
pub enum Deck {
|
||||||
|
|
@ -218,21 +216,3 @@ impl Default for NormalDeck {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
pub(crate) fn child_ids<'a>(decks: &'a [Deck], name: &str) -> impl Iterator<Item = DeckID> + 'a {
|
|
||||||
let prefix = format!("{}::", name.to_ascii_lowercase());
|
|
||||||
decks
|
|
||||||
.iter()
|
|
||||||
.filter(move |d| d.name().to_ascii_lowercase().starts_with(&prefix))
|
|
||||||
.map(|d| d.id())
|
|
||||||
}
|
|
||||||
|
|
||||||
pub(crate) fn get_deck(decks: &[Deck], id: DeckID) -> Option<&Deck> {
|
|
||||||
for d in decks {
|
|
||||||
if d.id() == id {
|
|
||||||
return Some(d);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
None
|
|
||||||
}
|
|
||||||
Loading…
Reference in a new issue