summaryrefslogtreecommitdiff
path: root/src/routes/submission.rs
diff options
context:
space:
mode:
authorDaniel Hader <[email protected]>2026-06-02 20:37:40 -0500
committerDaniel Hader <[email protected]>2026-06-02 20:37:40 -0500
commit51fac3f3b6f73b649ba8109b37d8ff311b905cd4 (patch)
tree4a2eb771842bf65ccb6e95c6c1d59ef65cbd2a7d /src/routes/submission.rs
parent14a4d586b7c7abc86674724153757f15faf7262c (diff)
problem statement on submission page and submission logic tweaks
Diffstat (limited to 'src/routes/submission.rs')
-rw-r--r--src/routes/submission.rs31
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")))
+ }
+}