tdm_server_rust/entity/
questionnaire.rs1use chrono::{DateTime, Utc};
7use serde::{Deserialize, Serialize};
8
9#[derive(Debug, Clone, Serialize, Deserialize, Default)]
18#[serde(rename_all = "camelCase")]
19pub struct Questionnaire {
20 pub id: Option<i64>,
22 #[serde(default)]
24 pub member_id: Option<i32>,
25 pub willingness: Option<i16>,
27 pub acceptable_lengths: Option<String>,
29 pub update_frequency: Option<i16>,
31 pub preferred_genres: Option<String>,
33 pub avoid_topics: Option<String>,
35 pub note: Option<String>,
37 pub remark: Option<String>,
39 pub last_assigned_time: Option<DateTime<Utc>>,
41 pub created_at: Option<DateTime<Utc>>,
43 pub updated_at: Option<DateTime<Utc>>,
45}
46
47#[cfg(test)]
48mod tests {
49 use super::*;
50
51 #[test]
53 fn deserialize_submit_body() {
54 let json = r#"{
55 "willingness": 3,
56 "acceptableLengths": "short,medium",
57 "updateFrequency": 2,
58 "preferredGenres": "日常",
59 "avoidTopics": "恐怖",
60 "note": "补充"
61 }"#;
62 let q: Questionnaire = serde_json::from_str(json).expect("应能反序列化");
63 assert_eq!(q.willingness, Some(3));
64 assert_eq!(q.acceptable_lengths.as_deref(), Some("short,medium"));
65 assert_eq!(q.update_frequency, Some(2));
66 }
67}