headless_lms_server/controllers/cms/
exercise_services.rs

1//! Controllers for requests starting with `/api/v0/cms/exercise-services`.
2
3use models::exercise_services::ExerciseServiceIframeRenderingInfo;
4
5use crate::{domain::models_requests, prelude::*};
6
7/**
8GET `/api/v0/cms/exercise-services` - List all exercise services configured in the system.
9*/
10#[instrument(skip(pool))]
11async fn get_all_exercise_services(
12    pool: web::Data<PgPool>,
13    user: AuthUser,
14) -> ControllerResult<web::Json<Vec<ExerciseServiceIframeRenderingInfo>>> {
15    let mut conn = pool.acquire().await?;
16    let token = authorize(&mut conn, Act::Teach, Some(user.id), Res::AnyCourse).await?;
17    let res = models::exercise_services::get_all_exercise_services_iframe_rendering_infos(
18        &mut conn,
19        models_requests::fetch_service_info,
20    )
21    .await?;
22
23    token.authorized_ok(web::Json(res))
24}
25
26pub fn _add_routes(cfg: &mut ServiceConfig) {
27    cfg.route("", web::get().to(get_all_exercise_services));
28}