feat(routes): edit API routes to use URL parameter
This commit is contained in:
parent
585a4a6eb7
commit
ad9942a44f
2 changed files with 8 additions and 25 deletions
16
src/api.rs
16
src/api.rs
|
@ -114,22 +114,6 @@ pub async fn get_items_by_url(
|
|||
}
|
||||
}
|
||||
|
||||
#[cfg(feature = "ssr")]
|
||||
pub async fn create_item_by_url(
|
||||
db: web::Data<Arc<Mutex<Database>>>,
|
||||
url: web::Path<String>,
|
||||
item: web::Json<Item>,
|
||||
) -> HttpResponse {
|
||||
let db = db.lock().await;
|
||||
match db.insert_item_by_url(&url, &item.into_inner()).await {
|
||||
Ok(_) => HttpResponse::Ok().body("Item inserted"),
|
||||
Err(err) => {
|
||||
leptos::logging::error!("Failed to insert item by URL: {:?}", err);
|
||||
HttpResponse::InternalServerError().body("Failed to insert item by URL")
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
#[cfg(feature = "ssr")]
|
||||
pub async fn delete_item_by_url(
|
||||
db: web::Data<Arc<Mutex<Database>>>,
|
||||
|
|
17
src/main.rs
17
src/main.rs
|
@ -42,15 +42,15 @@ async fn main() -> std::io::Result<()> {
|
|||
|
||||
App::new()
|
||||
.app_data(web::Data::new(db.clone()))
|
||||
.route("/{url}/items", web::get().to(get_items_handler))
|
||||
.route("/{url}/items", web::post().to(create_item_handler))
|
||||
.route("/{url}/items/{item_id}", web::delete().to(delete_item_handler))
|
||||
// Register custom API routes BEFORE Leptos server functions
|
||||
.service(
|
||||
web::scope("/api")
|
||||
.route("/items", web::get().to(get_items)) // GET /api/items
|
||||
.route("/items", web::post().to(create_item)) // POST /api/items
|
||||
.route("/items/{id}", web::delete().to(delete_item)) // DELETE /api/items/{id}
|
||||
.service(
|
||||
web::scope("/urls/{url}")
|
||||
.route("/items", web::get().to(get_items_handler)) // GET items by URL
|
||||
.route("/items", web::post().to(create_item_handler)) // Create item for URL
|
||||
.route("/items/{item_id}", web::delete().to(delete_item_handler)) // Delete item
|
||||
)
|
||||
.route("/properties/{property}", web::delete().to(delete_property)), // DELETE /api/properties/{property}
|
||||
)
|
||||
// Register server functions
|
||||
|
@ -88,12 +88,11 @@ async fn get_items_handler(
|
|||
// Handler to create an item for a specific URL
|
||||
async fn create_item_handler(
|
||||
db: web::Data<Arc<Mutex<Database>>>,
|
||||
path: web::Path<String>,
|
||||
url: web::Path<String>,
|
||||
item: web::Json<Item>,
|
||||
) -> impl Responder {
|
||||
let url = path.into_inner();
|
||||
let request = ItemRequest {
|
||||
url,
|
||||
url: url.into_inner(),
|
||||
item: item.into_inner()
|
||||
};
|
||||
create_item(db, web::Json(request)).await
|
||||
|
|
Loading…
Add table
Reference in a new issue