Crates.io | axum_sqlx_sessions |
lib.rs | axum_sqlx_sessions |
version | 0.1.4 |
source | src |
created_at | 2021-11-11 21:06:54.890817 |
updated_at | 2021-12-06 21:42:30.164105 |
description | Library to Provide a Postgresql Session management layer. You must also include Tower_cookies in order to use this Library. |
homepage | |
repository | https://github.com/AscendingCreations/AxumSqlxSessions |
max_upload_size | |
id | 480392 |
size | 31,973 |
Library to Provide a Postgresql Session management layer. You must also include Tower_cookies in order to use this Library.
pub fn init_pool(config: &ServerConfig) -> anyhow::Result<sqlx::Pool<sqlx::Postgres>> {
let mut connect_opts = PgConnectOptions::new();
connect_opts.log_statements(LevelFilter::Debug);
connect_opts = connect_opts.database(&config.pgsql_database[..]);
connect_opts = connect_opts.username(&config.pgsql_user[..]);
connect_opts = connect_opts.password(&config.pgsql_password[..]);
connect_opts = connect_opts.host(&config.pgsql_host[..]);
connect_opts = connect_opts.port(config.pgsql_port);
let pool = block_on(
PgPoolOptions::new()
.max_connections(5)
.connect_with(connect_opts),
)?;
Ok(pool)
}
#[tokio::main]
async fn main() {
// Set the RUST_LOG, if it hasn't been explicitly defined
if std::env::var_os("RUST_LOG").is_none() {
std::env::set_var("RUST_LOG", "example_templates=debug,tower_http=debug")
}
tracing_subscriber::fmt::init();
let config = //load your config here.
let poll = init_pool(&config).unwrap();
let session_config = SqlxSessionConfig::default()
.with_database("test")
.with_table_name("test_table");
// build our application with some routes
let app = Router::new()
.route("/greet/:name", get(greet))
.layer(tower_cookies::CookieManagerLayer::new())
.layer(SqlxSessionLayer::new(session_config, poll.clone()))
// run it
let addr = SocketAddr::from(([127, 0, 0, 1], 3000));
tracing::debug!("listening on {}", addr);
axum::Server::bind(&addr)
.serve(app.into_make_service())
.await
.unwrap();
}
async fn greet(session: SQLxSession) -> &'static str {
let mut count: usize = session.get("count").unwrap_or(0);
count += 1;
session.set("count", count);
count.to_string()[..]
}