headless_lms_models/library/
custom_view_exercises.rs1use crate::{
2 exercises::Exercise, prelude::*,
3 user_course_instance_exercise_service_variables::UserCourseInstanceExerciseServiceVariable,
4};
5
6#[derive(Debug, Serialize, Deserialize, PartialEq, Clone)]
7#[cfg_attr(feature = "ts_rs", derive(TS))]
8pub struct CustomViewExerciseTaskGrading {
9 pub id: Uuid,
10 pub created_at: DateTime<Utc>,
11 pub exercise_id: Uuid,
12 pub exercise_task_id: Uuid,
13 pub feedback_json: Option<serde_json::Value>,
14 pub feedback_text: Option<String>,
15}
16
17#[derive(Debug, Serialize, Deserialize, PartialEq, Clone)]
18#[cfg_attr(feature = "ts_rs", derive(TS))]
19pub struct CustomViewExerciseTaskSpec {
20 pub id: Uuid,
21 pub public_spec: Option<serde_json::Value>,
22 pub order_number: i32,
23}
24
25#[derive(Debug, Serialize, Deserialize, PartialEq, Eq, Clone)]
26#[cfg_attr(feature = "ts_rs", derive(TS))]
27pub struct CustomViewExerciseTaskSubmission {
28 pub id: Uuid,
29 pub created_at: DateTime<Utc>,
30 pub exercise_slide_submission_id: Uuid,
31 pub exercise_slide_id: Uuid,
32 pub exercise_task_id: Uuid,
33 pub exercise_task_grading_id: Option<Uuid>,
34 pub data_json: Option<serde_json::Value>,
35}
36
37#[derive(Debug, Serialize, Deserialize, PartialEq, Clone)]
38#[cfg_attr(feature = "ts_rs", derive(TS))]
39pub struct CustomViewExerciseSubmissions {
40 pub exercise_tasks: CustomViewExerciseTasks,
41 pub exercises: Vec<Exercise>,
42 pub user_variables: Vec<UserCourseInstanceExerciseServiceVariable>,
43}
44
45#[derive(Debug, Serialize, Deserialize, PartialEq, Clone)]
46#[cfg_attr(feature = "ts_rs", derive(TS))]
47pub struct CustomViewExerciseTasks {
48 pub exercise_tasks: Vec<CustomViewExerciseTaskSpec>,
49 pub task_submissions: Vec<CustomViewExerciseTaskSubmission>,
50 pub task_gradings: Vec<CustomViewExerciseTaskGrading>,
51}