journallib/dto/
scenario_section.rs1use postgres_types::{FromSql, ToSql};
2use serde::{Deserialize, Serialize};
3use serde_json;
4use uuid::Uuid;
5
6#[derive(Serialize, Deserialize, Debug, Clone, PartialEq, FromSql, ToSql)]
7#[serde(rename_all = "camelCase")]
8pub struct TargetObject {
9 #[serde(skip_serializing_if = "Option::is_none")]
10 pub form_request: Option<Uuid>,
11 #[serde(skip_serializing_if = "Option::is_none")]
12 pub article: Option<String>,
13 #[serde(skip_serializing_if = "Option::is_none")]
14 pub task: Option<Uuid>,
15 #[serde(skip_serializing_if = "Option::is_none")]
16 pub videos: Option<Vec<String>>,
17 #[serde(skip_serializing_if = "Option::is_none")]
18 pub pictures: Option<Vec<String>>,
19 #[serde(skip_serializing_if = "Option::is_none")]
20 pub file: Option<Vec<String>>,
21 #[serde(skip_serializing_if = "Option::is_none")]
22 pub polyglot_text: Option<serde_json::Value>,
23 #[serde(skip_serializing_if = "Option::is_none")]
24 pub polyglot_image: Option<serde_json::Value>,
25 #[serde(skip_serializing_if = "Option::is_none")]
26 pub robotics: Option<serde_json::Value>,
27 #[serde(skip_serializing_if = "Option::is_none")]
28 pub entity_id: Option<Uuid>,
29 #[serde(skip_serializing_if = "Option::is_none")]
30 pub level: Option<i32>,
31 #[serde(skip_serializing_if = "Option::is_none")]
32 pub briefing: Option<Uuid>,
33}
34
35#[derive(Serialize, Deserialize, Debug, Clone, PartialEq, FromSql, ToSql)]
36#[serde(rename_all = "camelCase")]
37pub struct ScenarioSection {
38 #[serde(skip_serializing_if = "Option::is_none")]
39 pub id: Option<Uuid>,
40 #[serde(skip_serializing_if = "Option::is_none")]
41 pub scenario: Option<Uuid>,
42 #[serde(skip_serializing_if = "Option::is_none")]
43 pub target_object: Option<TargetObject>,
44 #[serde(skip_serializing_if = "Option::is_none")]
45 pub types: Option<String>,
46 #[serde(skip_serializing_if = "Option::is_none")]
47 pub name: Option<String>,
48 #[serde(rename = "type")]
49 #[serde(skip_serializing_if = "Option::is_none")]
50 pub section_type: Option<String>,
51 #[serde(skip_serializing_if = "Option::is_none")]
52 pub estimated_duration: Option<i32>,
53 #[serde(skip_serializing_if = "Option::is_none")]
54 pub intended_usage: Option<String>,
55 #[serde(skip_serializing_if = "Option::is_none")]
56 pub student_visibility: Option<String>,
57 #[serde(skip_serializing_if = "Option::is_none")]
58 pub comment: Option<String>,
59 #[serde(skip_serializing_if = "Option::is_none")]
60 pub status: Option<String>,
61 #[serde(skip_serializing_if = "Option::is_none")]
62 pub students_completed: Option<Vec<Uuid>>,
63 #[serde(skip_serializing_if = "Option::is_none")]
64 pub removed: Option<bool>,
65}
66
67#[derive(Serialize, Deserialize, Debug, Clone, PartialEq, FromSql, ToSql)]
68#[serde(rename_all = "camelCase")]
69pub struct ScenarioSections(pub Vec<ScenarioSection>);