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")]
|
#[cfg(feature = "ssr")]
|
||||||
pub async fn delete_item_by_url(
|
pub async fn delete_item_by_url(
|
||||||
db: web::Data<Arc<Mutex<Database>>>,
|
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::new()
|
||||||
.app_data(web::Data::new(db.clone()))
|
.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
|
// Register custom API routes BEFORE Leptos server functions
|
||||||
.service(
|
.service(
|
||||||
web::scope("/api")
|
web::scope("/api")
|
||||||
.route("/items", web::get().to(get_items)) // GET /api/items
|
.service(
|
||||||
.route("/items", web::post().to(create_item)) // POST /api/items
|
web::scope("/urls/{url}")
|
||||||
.route("/items/{id}", web::delete().to(delete_item)) // DELETE /api/items/{id}
|
.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}
|
.route("/properties/{property}", web::delete().to(delete_property)), // DELETE /api/properties/{property}
|
||||||
)
|
)
|
||||||
// Register server functions
|
// Register server functions
|
||||||
|
@ -88,12 +88,11 @@ async fn get_items_handler(
|
||||||
// Handler to create an item for a specific URL
|
// Handler to create an item for a specific URL
|
||||||
async fn create_item_handler(
|
async fn create_item_handler(
|
||||||
db: web::Data<Arc<Mutex<Database>>>,
|
db: web::Data<Arc<Mutex<Database>>>,
|
||||||
path: web::Path<String>,
|
url: web::Path<String>,
|
||||||
item: web::Json<Item>,
|
item: web::Json<Item>,
|
||||||
) -> impl Responder {
|
) -> impl Responder {
|
||||||
let url = path.into_inner();
|
|
||||||
let request = ItemRequest {
|
let request = ItemRequest {
|
||||||
url,
|
url: url.into_inner(),
|
||||||
item: item.into_inner()
|
item: item.into_inner()
|
||||||
};
|
};
|
||||||
create_item(db, web::Json(request)).await
|
create_item(db, web::Json(request)).await
|
||||||
|
|
Loading…
Add table
Reference in a new issue