#[cfg(feature = "ssr")] use actix_web::{web, HttpResponse}; #[cfg(feature = "ssr")] use crate::db::{Database, DbItem}; #[cfg(feature = "ssr")] use std::sync::Arc; #[cfg(feature = "ssr")] use tokio::sync::Mutex; #[cfg(feature = "ssr")] pub async fn get_items( db: web::Data>>, url: web::Query, ) -> HttpResponse { let db = db.lock().await; match db.get_items_by_url(&url).await { Ok(items) => HttpResponse::Ok().json(items), Err(err) => { leptos::logging::error!("Failed to fetch items: {:?}", err); HttpResponse::InternalServerError().body("Failed to fetch items") } } } #[cfg(feature = "ssr")] pub async fn create_item( db: web::Data>>, url: web::Query, item: web::Json, ) -> 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: {:?}", err); HttpResponse::InternalServerError().body("Failed to insert item") } } } #[cfg(feature = "ssr")] pub async fn delete_item( db: web::Data>>, url: web::Query, item_id: web::Path, ) -> HttpResponse { let db = db.lock().await; match db.delete_item_by_url(&url, &item_id).await { Ok(_) => HttpResponse::Ok().body("Item deleted"), Err(err) => { leptos::logging::error!("Failed to delete item: {:?}", err); HttpResponse::InternalServerError().body("Failed to delete item") } } } #[cfg(feature = "ssr")] pub async fn delete_property( db: web::Data>>, url: web::Query, property: web::Path, ) -> HttpResponse { let db = db.lock().await; match db.delete_property_by_url(&url, &property).await { Ok(_) => HttpResponse::Ok().body("Property deleted"), Err(err) => { leptos::logging::error!("Failed to delete property: {:?}", err); HttpResponse::InternalServerError().body("Failed to delete property") } } } #[cfg(feature = "ssr")] pub async fn get_items_by_url( db: web::Data>>, url: web::Path, ) -> HttpResponse { let db = db.lock().await; match db.get_items_by_url(&url).await { Ok(items) => HttpResponse::Ok().json(items), Err(err) => { leptos::logging::error!("Failed to fetch items by URL: {:?}", err); HttpResponse::InternalServerError().body("Failed to fetch items by URL") } } } #[cfg(feature = "ssr")] pub async fn create_item_by_url( db: web::Data>>, url: web::Path, item: web::Json, ) -> 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>>, url: web::Path, item_id: web::Path, ) -> HttpResponse { let db = db.lock().await; match db.delete_item_by_url(&url, &item_id).await { Ok(_) => HttpResponse::Ok().body("Item deleted"), Err(err) => { leptos::logging::error!("Failed to delete item by URL: {:?}", err); HttpResponse::InternalServerError().body("Failed to delete item by URL") } } } #[cfg(feature = "ssr")] pub async fn delete_property_by_url( db: web::Data>>, url: web::Path, property: web::Path, ) -> HttpResponse { let db = db.lock().await; match db.delete_property_by_url(&url, &property).await { Ok(_) => HttpResponse::Ok().body("Property deleted"), Err(err) => { leptos::logging::error!("Failed to delete property by URL: {:?}", err); HttpResponse::InternalServerError().body("Failed to delete property by URL") } } }