mirror of
https://github.com/RGBCube/GDUS
synced 2025-07-29 05:57:45 +00:00
Add basic db logic
This commit is contained in:
parent
5732a54f7f
commit
6fb17a18c6
4 changed files with 64 additions and 4 deletions
14
Cargo.lock
generated
14
Cargo.lock
generated
|
@ -1589,6 +1589,8 @@ dependencies = [
|
||||||
"smallvec",
|
"smallvec",
|
||||||
"sqlformat",
|
"sqlformat",
|
||||||
"thiserror",
|
"thiserror",
|
||||||
|
"tokio",
|
||||||
|
"tokio-stream",
|
||||||
"tracing",
|
"tracing",
|
||||||
"url",
|
"url",
|
||||||
]
|
]
|
||||||
|
@ -1628,6 +1630,7 @@ dependencies = [
|
||||||
"sqlx-sqlite",
|
"sqlx-sqlite",
|
||||||
"syn 1.0.109",
|
"syn 1.0.109",
|
||||||
"tempfile",
|
"tempfile",
|
||||||
|
"tokio",
|
||||||
"url",
|
"url",
|
||||||
]
|
]
|
||||||
|
|
||||||
|
@ -1881,6 +1884,17 @@ dependencies = [
|
||||||
"syn 2.0.39",
|
"syn 2.0.39",
|
||||||
]
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "tokio-stream"
|
||||||
|
version = "0.1.14"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "397c988d37662c7dda6d2208364a706264bf3d6138b11d436cbac0ad38832842"
|
||||||
|
dependencies = [
|
||||||
|
"futures-core",
|
||||||
|
"pin-project-lite",
|
||||||
|
"tokio",
|
||||||
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "tokio-util"
|
name = "tokio-util"
|
||||||
version = "0.7.10"
|
version = "0.7.10"
|
||||||
|
|
|
@ -11,7 +11,7 @@ edition = "2021"
|
||||||
actix-web = "4.4.0"
|
actix-web = "4.4.0"
|
||||||
maud = { version = "0.25.0", features = [ "actix-web" ] }
|
maud = { version = "0.25.0", features = [ "actix-web" ] }
|
||||||
serde = { version = "1.0.192", features = [ "derive" ] }
|
serde = { version = "1.0.192", features = [ "derive" ] }
|
||||||
sqlx = { version = "0.7.3", features = ["sqlite"] }
|
sqlx = { version = "0.7.3", features = ["sqlite", "runtime-tokio"] }
|
||||||
tokio = { version = "1.34.0", features = [ "full" ] }
|
tokio = { version = "1.34.0", features = [ "full" ] }
|
||||||
|
|
||||||
[profile.dev]
|
[profile.dev]
|
||||||
|
|
23
src/main.rs
23
src/main.rs
|
@ -4,11 +4,32 @@ mod submit;
|
||||||
use std::io;
|
use std::io;
|
||||||
|
|
||||||
use actix_web as web;
|
use actix_web as web;
|
||||||
|
use sqlx::{
|
||||||
|
sqlite::SqliteConnectOptions,
|
||||||
|
SqlitePool,
|
||||||
|
};
|
||||||
|
|
||||||
#[web::main]
|
#[web::main]
|
||||||
async fn main() -> io::Result<()> {
|
async fn main() -> io::Result<()> {
|
||||||
web::HttpServer::new(|| {
|
let db = SqlitePool::connect_with(SqliteConnectOptions::new().filename("data.db"))
|
||||||
|
.await
|
||||||
|
.unwrap();
|
||||||
|
|
||||||
|
sqlx::query(
|
||||||
|
r"
|
||||||
|
CREATE TABLE IF NOT EXISTS reminders (
|
||||||
|
date TEXT,
|
||||||
|
message TEXT
|
||||||
|
)
|
||||||
|
",
|
||||||
|
)
|
||||||
|
.execute(&db)
|
||||||
|
.await
|
||||||
|
.unwrap();
|
||||||
|
|
||||||
|
web::HttpServer::new(move || {
|
||||||
web::App::new()
|
web::App::new()
|
||||||
|
.app_data(web::web::Data::new(db.clone()))
|
||||||
.service(index::index)
|
.service(index::index)
|
||||||
.service(submit::submit)
|
.service(submit::submit)
|
||||||
.service(submit::submit_form)
|
.service(submit::submit_form)
|
||||||
|
|
|
@ -1,10 +1,14 @@
|
||||||
use actix_web as web;
|
use actix_web as web;
|
||||||
use actix_web::web::Query;
|
use actix_web::web::{
|
||||||
|
Data,
|
||||||
|
Query,
|
||||||
|
};
|
||||||
use maud::{
|
use maud::{
|
||||||
html,
|
html,
|
||||||
Markup,
|
Markup,
|
||||||
DOCTYPE,
|
DOCTYPE,
|
||||||
};
|
};
|
||||||
|
use sqlx::SqlitePool;
|
||||||
|
|
||||||
#[derive(Debug, serde::Deserialize)]
|
#[derive(Debug, serde::Deserialize)]
|
||||||
pub struct Reminder {
|
pub struct Reminder {
|
||||||
|
@ -13,12 +17,33 @@ pub struct Reminder {
|
||||||
}
|
}
|
||||||
|
|
||||||
#[web::get("/submit-form")]
|
#[web::get("/submit-form")]
|
||||||
async fn submit_form(Query(reminder): Query<Reminder>) -> web::Result<Markup> {
|
async fn submit_form(
|
||||||
|
data: Data<SqlitePool>,
|
||||||
|
Query(reminder): Query<Reminder>,
|
||||||
|
) -> web::Result<Markup> {
|
||||||
println!("{reminder:?}");
|
println!("{reminder:?}");
|
||||||
|
|
||||||
|
sqlx::query(
|
||||||
|
r"
|
||||||
|
INSERT INTO
|
||||||
|
reminders (date, message)
|
||||||
|
VALUES
|
||||||
|
(?, ?)
|
||||||
|
",
|
||||||
|
)
|
||||||
|
.bind(reminder.date)
|
||||||
|
.bind(reminder.message)
|
||||||
|
.execute(&**data)
|
||||||
|
.await
|
||||||
|
.expect("Failed to save reminder.");
|
||||||
|
|
||||||
Ok(html! {
|
Ok(html! {
|
||||||
(DOCTYPE)
|
(DOCTYPE)
|
||||||
h1 { "Kaydedildi." }
|
h1 { "Kaydedildi." }
|
||||||
|
p { "Ana sayfaya geri yönlendiriliyorsun..." }
|
||||||
|
script type="text/javascript" {r#"
|
||||||
|
setTimeout(() => window.location.href = "/", 5000);
|
||||||
|
"#}
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue