+#[get("/recipe/new")]
+pub async fn new_recipe(
+ req: HttpRequest,
+ path: web::Path<(i64,)>,
+ connection: web::Data<db::Connection>,
+) -> Result<HttpResponse> {
+ let user = match get_current_user(&req, connection.clone()).await {
+ Some(u) => u,
+ None =>
+ return Ok(MessageTemplate {
+ message: "Cannot create a recipe without being logged in",
+ user: None
+ }.to_response())
+ };
+
+ let recipe_id = connection.create_recipe_async(user.id).await?;
+ let recipes = connection.get_all_recipe_titles_async().await?;
+ let user_id = user.id;
+
+ Ok(EditRecipeTemplate {
+ user: Some(user),
+ current_recipe_id: Some(recipe_id),
+ recipes,
+ current_recipe: model::Recipe::empty(recipe_id, user_id),
+ }
+ .to_response())
+}
+