From cd316de7293f5a31f125fb62611af4df7259aff4 Mon Sep 17 00:00:00 2001 From: Santo Cariotti Date: Mon, 3 Oct 2022 21:48:52 +0200 Subject: Add model search by fields --- src/routes/model.rs | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) (limited to 'src/routes/model.rs') diff --git a/src/routes/model.rs b/src/routes/model.rs index d72d7af..44e2b77 100644 --- a/src/routes/model.rs +++ b/src/routes/model.rs @@ -4,7 +4,7 @@ use crate::{ models::{ auth::Claims, likes::Like, - model::{Model, ModelCreate, ModelUpload, ModelUser}, + model::{Model, ModelCreate, ModelFilter, ModelUpload, ModelUser}, user::User, }, pagination::{ModelPagination, Pagination}, @@ -21,6 +21,7 @@ use axum::{ pub fn create_route() -> Router { Router::new() .route("/", get(list_models).post(create_model)) + .route("/filter", post(filter_models)) .route("/:id", get(get_model).delete(delete_model).put(edit_model)) .route("/:id/like", post(add_like).delete(delete_like)) .route("/:id/upload", post(upload_model_file)) @@ -251,3 +252,16 @@ async fn delete_like(claims: Claims, Path(model_id): Path) -> Result, + Json(payload): Json, +) -> Result, AppError> { + let page = pagination.0.page.unwrap_or_default(); + + let results = Model::filter(page, payload.q.clone()).await?; + let count = Model::count_filter(payload.q).await?; + + Ok(Json(ModelPagination { count, results })) +} -- cgit v1.2.3-71-g8e6c