diff --git a/Cargo.lock b/Cargo.lock index c3041dd..56ff386 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -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", diff --git a/src/handlers/handlers.rs b/src/handlers/handlers.rs index 87439eb..eda9cc4 100644 --- a/src/handlers/handlers.rs +++ b/src/handlers/handlers.rs @@ -42,21 +42,28 @@ pub async fn post_signup( ) -> Result { 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()) } } diff --git a/src/main.rs b/src/main.rs index 8ac260f..6c57ee7 100644 --- a/src/main.rs +++ b/src/main.rs @@ -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 => {}, } }