headless_lms_models/library/
custom_view_exercises.rs1use 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}