headless_lms_server/controllers/course_material/
proposed_edits.rs1use models::proposed_page_edits::NewProposedPageEdits;
2
3use crate::prelude::*;
4
5#[instrument(skip(pool))]
9async fn post_proposed_edits(
10    pool: web::Data<PgPool>,
11    course_id: web::Path<Uuid>,
12    payload: web::Json<NewProposedPageEdits>,
13    user: Option<AuthUser>,
14) -> ControllerResult<HttpResponse> {
15    let mut conn = pool.acquire().await?;
16    let user_id = user.map(|u| u.id);
17    models::proposed_page_edits::insert(
18        &mut conn,
19        PKeyPolicy::Generate,
20        *course_id,
21        user_id,
22        &payload,
23    )
24    .await?;
25    let token = authorize(&mut conn, Act::View, user_id, Res::Course(*course_id)).await?;
26    token.authorized_ok(HttpResponse::Ok().finish())
27}
28
29pub fn _add_routes(cfg: &mut ServiceConfig) {
37    cfg.route("/{course_id}", web::post().to(post_proposed_edits));
38}