This commit is contained in:
Joe Ardent 2024-03-09 14:54:14 -08:00
parent c4f599e394
commit 9373c5c340
3 changed files with 34 additions and 26 deletions

20
Cargo.lock generated
View file

@ -245,9 +245,9 @@ checksum = "a2bd12c1caf447e69cd4528f47f94d203fd2582878ecb9e9465484c4148a8223"
[[package]]
name = "cc"
version = "1.0.89"
version = "1.0.90"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "a0ba8f7aaa012f30d5b2861462f6708eccd49c3c39863fe083a308035f63d723"
checksum = "8cd6604a82acf3039f1144f54b8eb34e91ffba622051189e71b781822d5ee1f5"
[[package]]
name = "cfg-if"
@ -263,9 +263,9 @@ checksum = "fd16c4719339c4530435d38e511904438d07cce7950afa3718a84ac36c10e89e"
[[package]]
name = "chrono"
version = "0.4.34"
version = "0.4.35"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "5bc015644b92d5890fab7489e49d21f879d5c990186827d42ec511919404f38b"
checksum = "8eaf5903dcbc0a39312feb77df2ff4c76387d591b9fc7b04a238dcf8bb62639a"
dependencies = [
"num-traits",
]
@ -395,9 +395,9 @@ dependencies = [
[[package]]
name = "env_logger"
version = "0.11.2"
version = "0.11.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "6c012a26a7f605efc424dd53697843a72be7dc86ad2d01f7814337794a12231d"
checksum = "38b35839ba51819680ba087cd351788c9a3c476841207e0b8cee0b04722343b9"
dependencies = [
"env_filter",
"humantime",
@ -1100,18 +1100,18 @@ checksum = "e3148f5046208a5d56bcfc03053e3ca6334e51da8dfb19b6cdc8b306fae3283e"
[[package]]
name = "pin-project"
version = "1.1.4"
version = "1.1.5"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "0302c4a0442c456bd56f841aee5c3bfd17967563f6fadc9ceb9f9c23cf3807e0"
checksum = "b6bf43b791c5b9e34c3d182969b4abb522f9343702850a2e57f460d00d09b4b3"
dependencies = [
"pin-project-internal",
]
[[package]]
name = "pin-project-internal"
version = "1.1.4"
version = "1.1.5"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "266c042b60c9c76b8d53061e52b2e0d1116abc57cefc8c5cd671619a56ac3690"
checksum = "2f38a4412a78282e09a2cf38d195ea5420d15ba0602cb375210efbc877243965"
dependencies = [
"proc-macro2",
"quote",

View file

@ -42,21 +42,28 @@ pub async fn post_signup(
) -> Result<impl IntoResponse, CreateUserError> {
let user = validate_signup(&form).await?;
match session.insert(SIGNUP_KEY, user).await {
Ok(_) => {}
Ok(_) => {
dbg!("cool");
}
Err(e) => {
log::error!(
"Could not insert validated user form into session, got {}",
e
);
log::error!("Could not insert validated user form into session, got {e}",);
return Err(CreateUserErrorKind::UnknownEorr.into());
}
}
dbg!(&*MONTHLY_LINK);
match session.save().await {
// TODO: pass in as env var/into a state object that the handlers can read from
Ok(_) => Ok(Redirect::to(&MONTHLY_LINK)),
Ok(_) => {
let resp = Ok(Redirect::to(
"https://buy.stripe.com/test_eVa6rrb7ygjNbwk000",
));
dbg!(&resp);
resp
}
Err(e) => {
log::error!("Could not save session, got {}", e);
dbg!("error on save");
log::error!("Could not save session, got {e}");
Err(CreateUserErrorKind::UnknownEorr.into())
}
}

View file

@ -8,11 +8,11 @@ use axum::{
routing::{get, MethodRouter},
Router,
};
use sqlx::sqlite::{SqliteConnectOptions, SqlitePoolOptions};
use sqlx::sqlite::{SqliteConnectOptions, SqlitePool, SqlitePoolOptions};
use tokio::net::TcpListener;
use tower_http::services::ServeDir;
use tower_sessions::{Expiry, SessionManagerLayer};
use tower_sessions_sqlx_store::{sqlx::SqlitePool, SqliteStore};
use tower_sessions_sqlx_store::SqliteStore;
#[macro_use]
extern crate justerror;
@ -35,15 +35,14 @@ async fn main() {
let assets_svc = ServeDir::new(assets_dir.as_path());
let pool = db().await;
sqlx::migrate!().run(&pool).await.unwrap();
let session_store = SqliteStore::new(pool.clone());
session_store.migrate().await.unwrap();
session_store.migrate().await.unwrap();
let session_layer = SessionManagerLayer::new(session_store)
.with_secure(false)
.with_same_site(tower_sessions::cookie::SameSite::Lax)
.with_expiry(Expiry::OnInactivity(time::Duration::hours(2)));
.with_expiry(Expiry::OnInactivity(time::Duration::hours(12)));
sqlx::migrate!().run(&pool).await.unwrap();
// the core application, defining the routes and handlers
let app = Router::new()
@ -52,13 +51,15 @@ async fn main() {
.stripped_clone("/payment_success/", get(payment_success))
.route("/payment_success/:receipt", get(payment_success))
.layer(session_layer)
.with_state(pool)
.with_state(pool.clone())
.into_make_service();
let listener = mklistener().await;
axum::serve(listener, app)
.with_graceful_shutdown(shutdown_signal())
.await
.unwrap();
pool.close().await;
}
//-************************************************************************
@ -79,7 +80,7 @@ async fn db() -> SqlitePool {
let opts = SqliteConnectOptions::new()
.foreign_keys(true)
.create_if_missing(true)
.journal_mode(sqlx::sqlite::SqliteJournalMode::Persist)
.journal_mode(sqlx::sqlite::SqliteJournalMode::Wal)
.optimize_on_close(true, None);
SqlitePoolOptions::new().connect_with(opts).await.unwrap()
}
@ -138,7 +139,7 @@ async fn shutdown_signal() {
let terminate = std::future::pending::<()>();
tokio::select! {
_ = ctrl_c => {},
_ = ctrl_c => {log::info!("shutting down")},
_ = terminate => {},
}
}