use serde::{Deserialize, Serialize};
#[derive(Debug, Serialize)]
pub(crate) struct AnkiRequest<'a, T> {
pub action: &'a str,
pub version: u8,
#[serde(skip_serializing_if = "Option::is_none")]
pub key: Option<&'a str>,
#[serde(skip_serializing_if = "Option::is_none")]
pub params: Option<T>,
}
impl<'a, T> AnkiRequest<'a, T> {
pub fn new(action: &'a str, params: T, key: Option<&'a str>) -> Self {
Self {
action,
version: 6,
key,
params: Some(params),
}
}
pub fn without_params(action: &'a str, key: Option<&'a str>) -> AnkiRequest<'a, ()> {
AnkiRequest {
action,
version: 6,
key,
params: None,
}
}
}
#[derive(Debug, Deserialize)]
pub(crate) struct AnkiResponse<T> {
pub result: Option<T>,
pub error: Option<String>,
}