summaryrefslogtreecommitdiff
path: root/src/routes
diff options
context:
space:
mode:
Diffstat (limited to 'src/routes')
-rw-r--r--src/routes/submission.rs21
1 files changed, 20 insertions, 1 deletions
diff --git a/src/routes/submission.rs b/src/routes/submission.rs
index 50bb53d..4cfad5c 100644
--- a/src/routes/submission.rs
+++ b/src/routes/submission.rs
@@ -1,4 +1,4 @@
-use axum::{Json, extract::State, http::StatusCode, response::IntoResponse};
+use axum::{Json, extract::{Path, State}, http::StatusCode, response::IntoResponse};
use serde::Deserialize;
use crate::{AppState, routes::{auth::AuthUser, errors::RouteError}};
@@ -29,3 +29,22 @@ pub async fn create_submission(
Err(_) => Err(RouteError::Internal(format!("unable to insert submission")))
}
}
+
+pub async fn get_submissions_by_problem_id(
+ State(state): State<AppState>,
+ Path(problem_id): Path<i64>
+) -> Result<impl IntoResponse, RouteError> {
+ let submissions = state.database.fetch_submissions_by_problem_id(problem_id)
+ .map_err(|_| RouteError::Internal("unable to fetch submissions".into()))?;
+ Ok(Json(submissions))
+}
+
+pub async fn get_display_submissions(
+ State(state): State<AppState>,
+ Path(problem_id): Path<i64>
+) -> Result<impl IntoResponse, RouteError> {
+ let submissions = state.database.fetch_display_submissions(problem_id)
+ .map_err(|e| RouteError::Internal(format!("unable to fetch submissions: {e:?}")))?;
+ Ok(Json(submissions))
+}
+