server: Add a route to list recipes
This commit is contained in:
parent
69197a3852
commit
80e3d7ee86
3 changed files with 25 additions and 2 deletions
|
|
@ -96,3 +96,8 @@ pub struct CreateRecipeRequest {
|
||||||
pub struct CreateRecipeResponse {
|
pub struct CreateRecipeResponse {
|
||||||
pub id: i64,
|
pub id: i64,
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#[derive(Serialize, Deserialize, Clone, Debug)]
|
||||||
|
pub struct ListRecipesResponse {
|
||||||
|
pub recipes: Vec<(i64, String)>,
|
||||||
|
}
|
||||||
|
|
|
||||||
|
|
@ -218,6 +218,8 @@ pub(crate) fn router(api_allowed: Option<HeaderValue>) -> Router<AppState> {
|
||||||
)
|
)
|
||||||
.route(
|
.route(
|
||||||
"/household/:house_id/recipe",
|
"/household/:house_id/recipe",
|
||||||
post(recipe::create_recipe).layer(mk_service(vec![Method::POST])),
|
post(recipe::create_recipe)
|
||||||
|
.get(recipe::list_recipes)
|
||||||
|
.layer(mk_service(vec![Method::POST, Method::GET])),
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,4 @@
|
||||||
use api::{CreateRecipeRequest, CreateRecipeResponse};
|
use api::{CreateRecipeRequest, CreateRecipeResponse, ListRecipesResponse};
|
||||||
use axum::{extract::State, Json};
|
use axum::{extract::State, Json};
|
||||||
use sea_orm::{prelude::*, ActiveValue, TransactionTrait};
|
use sea_orm::{prelude::*, ActiveValue, TransactionTrait};
|
||||||
|
|
||||||
|
|
@ -61,3 +61,19 @@ pub(super) async fn create_recipe(
|
||||||
|
|
||||||
Ok(CreateRecipeResponse { id }.into())
|
Ok(CreateRecipeResponse { id }.into())
|
||||||
}
|
}
|
||||||
|
|
||||||
|
pub(super) async fn list_recipes(
|
||||||
|
AuthorizedHousehold(household): AuthorizedHousehold,
|
||||||
|
State(state): State<AppState>,
|
||||||
|
) -> JsonResult<ListRecipesResponse> {
|
||||||
|
Ok(ListRecipesResponse {
|
||||||
|
recipes: household
|
||||||
|
.find_related(Recipe)
|
||||||
|
.all(&state.db)
|
||||||
|
.await?
|
||||||
|
.into_iter()
|
||||||
|
.map(|r| (r.id, r.name))
|
||||||
|
.collect(),
|
||||||
|
}
|
||||||
|
.into())
|
||||||
|
}
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue