codify "platform" into resolution logic, server-fn/fullstack overhaul (#4596)
overhaul dioxus fullstack using a new implementation of server_fn This PR is a complete rewrite of dioxus fullstack designed to improve compatibility with axum and to fix a number of compilation errors based on feature flag unification plumbing through macros.
This commit is contained in:
1 parent
8421c3aef0
commit
f2b1c6d97f
424 files changed
+17284
-6624
No files matched your search
@@ -0,0 +1,41 @@
|
||||
use anyhow::Result;
|
||||
use dioxus::prelude::*;
|
||||
|
||||
#[cfg(feature = "server")]
|
||||
thread_local! {
|
||||
static DB: std::sync::LazyLock<rusqlite::Connection> = std::sync::LazyLock::new(|| {
|
||||
let conn = rusqlite::Connection::open("hotdogdb/hotdog.db").expect("Failed to open database");
|
||||
|
||||
conn.execute_batch(
|
||||
"CREATE TABLE IF NOT EXISTS dogs (
|
||||
id INTEGER PRIMARY KEY,
|
||||
url TEXT NOT NULL
|
||||
);",
|
||||
)
|
||||
.unwrap();
|
||||
|
||||
conn
|
||||
});
|
||||
}
|
||||
|
||||
#[get("/api/dogs")]
|
||||
pub async fn list_dogs() -> Result<Vec<(usize, String)>> {
|
||||
DB.with(|db| {
|
||||
Ok(db
|
||||
.prepare("SELECT id, url FROM dogs ORDER BY id DESC LIMIT 10")?
|
||||
.query_map([], |row| Ok((row.get(0)?, row.get(1)?)))?
|
||||
.collect::<Result<Vec<(usize, String)>, rusqlite::Error>>()?)
|
||||
})
|
||||
}
|
||||
|
||||
#[delete("/api/dogs/{id}")]
|
||||
pub async fn remove_dog(id: usize) -> Result<()> {
|
||||
DB.with(|db| db.execute("DELETE FROM dogs WHERE id = ?1", [id]))?;
|
||||
Ok(())
|
||||
}
|
||||
|
||||
#[post("/api/dogs")]
|
||||
pub async fn save_dog(image: String) -> Result<()> {
|
||||
DB.with(|db| db.execute("INSERT INTO dogs (url) VALUES (?1)", [&image]))?;
|
||||
Ok(())
|
||||
}
|
||||
Reference in new issue
Block a user