diff options
Diffstat (limited to 'src/commit/routes.rs')
-rw-r--r-- | src/commit/routes.rs | 20 |
1 files changed, 17 insertions, 3 deletions
diff --git a/src/commit/routes.rs b/src/commit/routes.rs index 95a74a2..a1da519 100644 --- a/src/commit/routes.rs +++ b/src/commit/routes.rs @@ -4,12 +4,26 @@ use crate::errors::{AppError, AppErrorResponse, AppErrorType}; use actix_web::http::header; use actix_web::{web, HttpRequest, HttpResponse, Responder}; use slog::info; +use std::collections::HashMap; use std::env; /// Endpoint used for getting all commits -async fn index(state: web::Data<AppState>) -> impl Responder { - info!(state.log, "GET /commit/"); - let result = Commit::find_all(state.pool.clone()).await; +async fn index( + req: HttpRequest, + state: web::Data<AppState>, +) -> impl Responder { + let query = + web::Query::<HashMap<String, String>>::from_query(req.query_string()) + .unwrap(); + + let hash = match query.get("q") { + Some(x) => x.clone(), + None => String::new(), + }; + + info!(state.log, "GET /commit/?q={}", &hash); + + let result = Commit::find_all(state.pool.clone(), &hash).await; match result { Ok(commits) => HttpResponse::Ok().json(commits), |