use axum::{Json, extract::State, http::StatusCode, response::IntoResponse}; use serde::Deserialize; use crate::{AppState, routes::{auth::AuthUser, errors::RouteError}}; #[derive(Deserialize)] pub(crate) struct CreateSubmissionRequest { problem_id: i64, language: String, details: String, code: String, } pub async fn create_submission( State(state): State, AuthUser(claims): AuthUser, Json(request): Json ) -> Result { let user_id = claims.sub; match state.database.insert_submission( user_id, request.problem_id, &request.language, &request.details, &request.code ) { Ok(submission) => Ok((StatusCode::CREATED, Json(submission))), Err(_) => Err(RouteError::Internal(format!("unable to insert submission"))) } }