1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
use crate::{
get, post, put,
response::{CollectionResponse, ResourceResponse},
wanikani_client::WanikaniClient,
wanikani_client::QP,
};
use chrono::{DateTime, Utc};
use reqwest::Error;
use serde::{Deserialize, Serialize};
use wanikani_rs_model::{study_material::StudyMaterial, subject_type::SubjectType};
#[derive(Serialize, Deserialize)]
#[serde(rename_all = "snake_case")]
pub enum StudyMaterialFilter {
Hidden(bool),
Ids(Vec<i64>),
SubjectIds(Vec<i64>),
SubjectTypes(Vec<SubjectType>),
UpdatedAfter(DateTime<Utc>),
}
#[derive(Serialize, Deserialize)]
pub struct StudyMaterialCreate {
pub subjet_id: i64,
pub meaning_note: Option<String>,
pub reading_note: Option<String>,
pub meaning_synonyms: Option<Vec<String>>,
}
#[derive(Serialize, Deserialize)]
pub struct StudyMaterialUpdate {
pub meaning_note: Option<String>,
pub reading_note: Option<String>,
pub meaning_synonyms: Option<Vec<String>>,
}
impl WanikaniClient {
get!(
get_study_materials_filtered,
"study_materials",
StudyMaterialFilter,
CollectionResponse<ResourceResponse<StudyMaterial>>
);
get!(
get_study_materials,
"study_materials",
CollectionResponse<ResourceResponse<StudyMaterial>>
);
get!(
get_study_material,
"study_materials/{id}",
ResourceResponse<StudyMaterial>,
id: i64
);
post!(
create_study_material,
"study_materials/",
StudyMaterialCreate,
ResourceResponse<StudyMaterial>
);
put!(
update_study_material,
"study_materials/{id}",
StudyMaterialUpdate,
ResourceResponse<StudyMaterial>,
id: i64
);
}