Skip to main content

headless_lms_server/controllers/main_frontend/
mod.rs

1/*!
2Handlers for HTTP requests to `/api/v0/main_frontend`.
3
4This documents all endpoints. Select a module below for a category.
5
6*/
7
8pub mod certificates;
9pub mod chapters;
10pub mod chatbot_models;
11pub mod chatbots;
12pub mod code_giveaways;
13pub mod course_instances;
14pub mod course_modules;
15pub mod courses;
16pub mod email_templates;
17pub mod exams;
18pub mod exercise_repositories;
19pub mod exercise_services;
20pub mod exercise_slide_submissions;
21pub mod exercises;
22pub mod feedback;
23pub mod global_stats;
24pub mod glossary;
25pub mod oauth;
26pub mod org;
27pub mod organizations;
28pub mod page_audio_files;
29pub mod pages;
30pub mod playground_examples;
31pub mod playground_views;
32pub mod proposed_edits;
33pub mod regradings;
34pub mod roles;
35pub mod status;
36pub mod teacher_grading_decisions;
37pub mod time;
38pub mod user_details;
39pub mod users;
40
41use actix_web::web::{self, ServiceConfig};
42use utoipa::OpenApi;
43
44#[derive(OpenApi)]
45#[openapi(
46    nest(
47        (path = "/certificates", api = certificates::MainFrontendCertificatesApiDoc),
48        (path = "/chapters", api = chapters::MainFrontendChaptersApiDoc),
49        (path = "/chatbot-models", api = chatbot_models::MainFrontendChatbotModelsApiDoc),
50        (path = "/chatbots", api = chatbots::MainFrontendChatbotsApiDoc),
51        (path = "/code-giveaways", api = code_giveaways::MainFrontendCodeGiveawaysApiDoc),
52        (path = "/course-instances", api = course_instances::MainFrontendCourseInstancesApiDoc),
53        (path = "/course-modules", api = course_modules::MainFrontendCourseModulesApiDoc),
54        (path = "/courses", api = courses::MainFrontendCoursesApiDoc),
55        (path = "/email-templates", api = email_templates::MainFrontendEmailTemplatesApiDoc),
56        (path = "/exams", api = exams::MainFrontendExamsApiDoc),
57        (path = "/exercise-repositories", api = exercise_repositories::MainFrontendExerciseRepositoriesApiDoc),
58        (path = "/exercise-services", api = exercise_services::MainFrontendExerciseServicesApiDoc),
59        (path = "/exercise-slide-submissions", api = exercise_slide_submissions::MainFrontendExerciseSlideSubmissionsApiDoc),
60        (path = "/exercises", api = exercises::MainFrontendExercisesApiDoc),
61        (path = "/feedback", api = feedback::MainFrontendFeedbackApiDoc),
62        (path = "/global-stats", api = global_stats::MainFrontendGlobalStatsApiDoc),
63        (path = "/glossary", api = glossary::MainFrontendGlossaryApiDoc),
64        (path = "/oauth", api = oauth::MainFrontendOauthApiDoc),
65        (path = "/org", api = org::MainFrontendOrgApiDoc),
66        (path = "/organizations", api = organizations::MainFrontendOrganizationsApiDoc),
67        (path = "/page_audio", api = page_audio_files::MainFrontendPageAudioApiDoc),
68        (path = "/pages", api = pages::MainFrontendPagesApiDoc),
69        (path = "/playground_examples", api = playground_examples::MainFrontendPlaygroundExamplesApiDoc),
70        (path = "/playground-views", api = playground_views::MainFrontendPlaygroundViewsApiDoc),
71        (path = "/proposed-edits", api = proposed_edits::MainFrontendProposedEditsApiDoc),
72        (path = "/regradings", api = regradings::MainFrontendRegradingsApiDoc),
73        (path = "/roles", api = roles::MainFrontendRolesApiDoc),
74        (path = "/status", api = status::MainFrontendStatusApiDoc),
75        (path = "/teacher-grading-decisions", api = teacher_grading_decisions::MainFrontendTeacherGradingDecisionsApiDoc),
76        (path = "/time", api = time::MainFrontendTimeApiDoc),
77        (path = "/user-details", api = user_details::MainFrontendUserDetailsApiDoc),
78        (path = "/users", api = users::MainFrontendUsersApiDoc)
79    )
80)]
81pub struct MainFrontendRoutesApiDoc;
82
83/// Add controllers from all the submodules.
84pub fn _add_routes(cfg: &mut ServiceConfig) {
85    cfg.service(web::scope("/chapters").configure(chapters::_add_routes))
86        .service(web::scope("/course-instances").configure(course_instances::_add_routes))
87        .service(web::scope("/course-modules").configure(course_modules::_add_routes))
88        .service(web::scope("/courses").configure(courses::_add_routes))
89        .service(web::scope("/email-templates").configure(email_templates::_add_routes))
90        .service(web::scope("/exercises").configure(exercises::_add_routes))
91        .service(web::scope("/feedback").configure(feedback::_add_routes))
92        .service(web::scope("/org").configure(org::_add_routes))
93        .service(web::scope("/organizations").configure(organizations::_add_routes))
94        .service(web::scope("/pages").configure(pages::_add_routes))
95        .service(
96            web::scope("/exercise-slide-submissions")
97                .configure(exercise_slide_submissions::_add_routes),
98        )
99        .service(web::scope("/proposed-edits").configure(proposed_edits::_add_routes))
100        .service(web::scope("/exercise-services").configure(exercise_services::_add_routes))
101        .service(web::scope("/playground_examples").configure(playground_examples::_add_routes))
102        .service(web::scope("/users").configure(users::_add_routes))
103        .service(web::scope("/exams").configure(exams::_add_routes))
104        .service(web::scope("/glossary").configure(glossary::_add_routes))
105        .service(web::scope("/roles").configure(roles::_add_routes))
106        .service(web::scope("/exercise-repositories").configure(exercise_repositories::_add_routes))
107        .service(web::scope("/regradings").configure(regradings::_add_routes))
108        .service(web::scope("/playground-views").configure(playground_views::_add_routes))
109        .service(web::scope("/page_audio").configure(page_audio_files::_add_routes))
110        .service(web::scope("/user-details").configure(user_details::_add_routes))
111        .service(web::scope("/certificates").configure(certificates::_add_routes))
112        .service(web::scope("/global-stats").configure(global_stats::_add_routes))
113        .service(
114            web::scope("/teacher-grading-decisions")
115                .configure(teacher_grading_decisions::_add_routes),
116        )
117        .service(web::scope("/code-giveaways").configure(code_giveaways::_add_routes))
118        .service(web::scope("/oauth").configure(oauth::_add_routes))
119        .service(web::scope("/chatbots").configure(chatbots::_add_routes))
120        .service(web::scope("/chatbot-models").configure(chatbot_models::_add_routes))
121        .service(web::scope("/time").configure(time::_add_routes))
122        .service(web::scope("/status").configure(status::_add_routes));
123}