diff options
| author | Daniel Hader <[email protected]> | 2026-06-02 20:37:40 -0500 |
|---|---|---|
| committer | Daniel Hader <[email protected]> | 2026-06-02 20:37:40 -0500 |
| commit | 51fac3f3b6f73b649ba8109b37d8ff311b905cd4 (patch) | |
| tree | 4a2eb771842bf65ccb6e95c6c1d59ef65cbd2a7d /src/routes/submission.rs | |
| parent | 14a4d586b7c7abc86674724153757f15faf7262c (diff) | |
problem statement on submission page and submission logic tweaks
Diffstat (limited to 'src/routes/submission.rs')
| -rw-r--r-- | src/routes/submission.rs | 31 |
1 files changed, 31 insertions, 0 deletions
diff --git a/src/routes/submission.rs b/src/routes/submission.rs new file mode 100644 index 0000000..50bb53d --- /dev/null +++ b/src/routes/submission.rs @@ -0,0 +1,31 @@ +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<AppState>, + AuthUser(claims): AuthUser, + Json(request): Json<CreateSubmissionRequest> +) -> Result<impl IntoResponse, RouteError> { + 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"))) + } +} |
