leetcode_api/leetcode/question/
qs_index.rs

1use question::*;
2use serde::{Deserialize, Serialize};
3
4#[derive(Clone)]
5#[derive(Debug)]
6#[derive(Default)]
7#[derive(PartialEq, Eq)]
8#[derive(Deserialize, Serialize)]
9pub struct Problems {
10    pub user_name: String,
11    pub num_solved: u32,
12    pub num_total: u32,
13    pub ac_easy: u32,
14    pub ac_medium: u32,
15    pub ac_hard: u32,
16    pub stat_status_pairs: Vec<QsIndex>,
17}
18
19/// base info of question
20#[derive(Clone)]
21#[derive(Debug)]
22#[derive(Default)]
23#[derive(PartialEq, Eq)]
24#[derive(Deserialize, Serialize)]
25pub struct QsIndex {
26    #[serde(default)]
27    pub stat: Stat,
28    #[serde(default)]
29    pub status: Option<String>,
30    #[serde(default)]
31    pub difficulty: Difficulty,
32    #[serde(default)]
33    pub paid_only: bool,
34    #[serde(default)]
35    pub is_favor: bool,
36    #[serde(default)]
37    pub frequency: u32,
38    #[serde(default)]
39    pub progress: u32,
40}
41
42pub mod question {
43    use lcode_config::{config::user_nested::Suffix, global::G_USER_CONFIG};
44    use serde::{Deserialize, Deserializer, Serialize};
45
46    #[derive(Clone)]
47    #[derive(Debug)]
48    #[derive(Default)]
49    #[derive(PartialEq, Eq)]
50    #[derive(Deserialize, Serialize)]
51    pub struct Stat {
52        pub question_id: u32,
53        #[serde(rename = "question__title")]
54        pub question_title: String,
55        #[serde(rename = "question__title_slug")]
56        pub question_title_slug: String,
57        #[serde(rename = "question__hide")]
58        pub question_hide: bool,
59        pub total_acs: u32,
60        pub total_submitted: u32,
61        #[serde(default, deserialize_with = "my_id_deserialize")]
62        pub frontend_question_id: String,
63    }
64
65    fn my_id_deserialize<'de, D>(deserializer: D) -> Result<String, D::Error>
66    where
67        D: Deserializer<'de>,
68    {
69        let res = match G_USER_CONFIG.config.url_suffix {
70            Suffix::Cn => String::deserialize(deserializer)?,
71            Suffix::Com => u32::deserialize(deserializer)?.to_string(),
72        };
73        Ok(res)
74    }
75
76    #[derive(Clone)]
77    #[derive(Debug)]
78    #[derive(Default)]
79    #[derive(PartialEq, Eq)]
80    #[derive(Deserialize, Serialize)]
81    pub struct Difficulty {
82        pub level: u32,
83    }
84}