use crate::model::{ModelController, Property, PropertyForCreate}; use crate::Result; use axum::extract::{Path, State}; use axum::routing::{delete, post}; use axum::{Json, Router}; pub fn routes(mc: ModelController) -> Router { Router::new() .route("/properties", post(create_property).get(list_properties)) .route("/properties/:id", delete(delete_property)) .with_state(mc) } // region: --- REST Handlers async fn create_property(State(mc): State, Json(property_fc): Json) -> Result> { println!("->> {:<12} - create_property", "HANDLER"); let property = mc.create_property(property_fc).await?; Ok(Json(property)) } async fn list_properties(State(mc): State) -> Result>> { println!("->> {:<12} - list_properties", "HANDLER"); let properties = mc.list_properties().await?; Ok(Json(properties)) } async fn delete_property(State(mc): State, Path(id): Path) -> Result> { println!("->> {:<12} - delete_property", "HANDLER"); let property = mc.delete_property(id).await?; Ok(Json(property)) } // endregion: --- REST Handlers