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}