use serde::{Deserialize, Serialize};
use crate::AnkiRequest;
use crate::entities::{DeckConfigId, Timestamp};
#[derive(Default, Debug, Clone, PartialEq, Eq, Serialize)]
pub struct GetDeckConfigRequest {
pub deck: String,
}
#[derive(Default, Debug, Clone, PartialEq, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct GetDeckConfigResponse {
pub autoplay: bool,
pub bury_interday_learning: bool,
#[serde(rename = "dyn")]
pub dyn_: bool,
pub id: DeckConfigId,
pub lapse: GetDeckConfigLapse,
pub max_taken: usize,
#[serde(rename = "mod")]
pub mod_: Timestamp,
pub name: String,
pub new: GetDeckConfigNew,
pub new_gather_priority: usize,
pub new_mix: usize,
pub new_per_day_minimum: usize,
pub new_sort_order: usize,
pub replayq: bool,
pub rev: GetDeckConfigRev,
pub review_order: usize,
pub timer: usize,
pub usn: isize,
}
#[derive(Default, Debug, Clone, PartialEq, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct GetDeckConfigNew {
pub bury: bool,
pub delays: Vec<f32>,
pub initial_factor: usize,
pub ints: Vec<usize>,
pub order: usize,
pub per_day: usize,
}
#[derive(Default, Debug, Clone, PartialEq, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct GetDeckConfigLapse {
pub delays: Vec<f32>,
pub leech_action: usize,
pub leech_fails: usize,
pub min_int: usize,
pub mult: f32,
}
#[derive(Default, Debug, Clone, PartialEq, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct GetDeckConfigRev {
pub bury: bool,
pub ease4: f32,
pub ivl_fct: f32,
pub max_ivl: usize,
pub per_day: usize,
pub hard_factor: f32,
}
impl AnkiRequest for GetDeckConfigRequest {
type Response = GetDeckConfigResponse;
const ACTION: &'static str = "getDeckConfig";
const VERSION: u8 = 6;
}