leetcode_api/leetcode/question/
qs_index.rs1use 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#[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}