From 16c1fd028a04e499244e6a5eeaf945339bdc8f14 Mon Sep 17 00:00:00 2001 From: SadlyNotSappho Date: Fri, 26 Jan 2024 11:59:39 -0800 Subject: [PATCH] technically, this can be used as a blogging software now. please do not do that though. --- Dockerfile | 3 -- db/diesel/migrations/up.sql | 6 ---- src/main.rs | 57 +++++++++++++++++++++++++++------ srv/db/diesel/migrations/up.sql | 0 4 files changed, 48 insertions(+), 18 deletions(-) delete mode 100644 db/diesel/migrations/up.sql delete mode 100644 srv/db/diesel/migrations/up.sql diff --git a/Dockerfile b/Dockerfile index 8c12602..1297d8c 100644 --- a/Dockerfile +++ b/Dockerfile @@ -25,7 +25,6 @@ RUN --mount=type=bind,source=src,target=src \ --mount=type=bind,source=Cargo.lock,target=Cargo.lock \ --mount=type=cache,target=/app/target/ \ --mount=type=cache,target=/usr/local/cargo/registry/ \ - --mount=type=bind,source=db,target=/srv/db \ <")] async fn dbtest(mut db: Connection, id: i64) -> Option { - sqlx::query("SELECT content FROM posts WHERE id = ?") - .bind(id) - .fetch_one(&mut **db) + let res = db + .fetch_one(sqlx::query_as::<_, Post>( + &format!("SELECT * FROM posts WHERE id = {id};")[..], + )) .await - .and_then(|r| Ok(r.try_get(0)?)) - .ok() + .unwrap(); + Some(format!( + "{}\n{}\n{}\n{}", + res.get::("id"), + res.get::("title"), + res.get::("body"), + res.get::("published") + )) +} + +#[get("/dbcreate//<body>/<published>")] +async fn dbcreate( + mut db: Connection<Db>, + title: String, + body: String, + published: bool, +) -> &'static str { + db.fetch_all( + sqlx::query( + r#" + INSERT INTO posts (title, body, published) + VALUES ($1, $2, $3); + "#, + ) + .bind(title) + .bind(body) + .bind(published), + ) + .await + .unwrap(); + "created maybe" } #[catch(default)] @@ -113,7 +144,12 @@ async fn migrate(rocket: Rocket<Build>) -> Rocket<Build> { let row = conn .fetch_one(sqlx::query_as::<_, Post>( - "SELECT * FROM table WHERE id = 1;", + "CREATE TABLE IF NOT EXISTS posts ( + id SERIAL PRIMARY KEY, + title VARCHAR NOT NULL, + body TEXT NOT NULL, + published BOOLEAN NOT NULL DEFAULT FALSE + )", )) .await; @@ -126,7 +162,10 @@ async fn main() { .attach(Db::init()) // .attach(Post) .attach(AdHoc::on_ignite("DB Migrations", migrate)) - .mount("/", routes![hello, get_book, delay, login, logout, dbtest]) + .mount( + "/", + routes![hello, get_book, delay, login, logout, dbtest, dbcreate], + ) .register("/", catchers![default_catcher]) .mount("/login", FileServer::from("/srv/web")) .launch() diff --git a/srv/db/diesel/migrations/up.sql b/srv/db/diesel/migrations/up.sql deleted file mode 100644 index e69de29..0000000