Skip to main content

headless_lms_models/library/
custom_view_exercises.rs

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