poem_dbsession/lib.rs
1//! Session storage using database for Poem
2//!
3//! # Crate features
4//!
5//! ## [`sqlx`](https://crates.io/crates/sqlx)
6//!
7//! | feature | database | tls |
8//! |---------------------------|----------|------------|
9//! | sqlx-mysql-rustls | mysql | rustls |
10//! | sqlx-mysql-native-tls | mysql | native-tls |
11//! | sqlx-postgres-rustls | postgres | rustls |
12//! | sqlx-postgres-native-tls | postgres | native-tls |
13//! | sqlx-sqlite-rustls | sqlite | rustls |
14//! | sqlx-sqlite-native-tls | sqlite | native-tls |
15//!
16//! ## Example
17//!
18//! ```rust,ignore
19//! use poem::session::{CookieConfig, ServerSession, Session};
20//! use poem_dbsession::{sqlx::MysqlSessionStorage, DatabaseConfig};
21//! use sqlx::MySqlPool;
22//!
23//! #[handler]
24//! fn index(session: &Session) {
25//! todo!()
26//! }
27//!
28//! let pool = MySqlPool::connect("mysql://root:123456@localhost/my_database")
29//! .await
30//! .unwrap();
31//! let storage = MysqlSessionStorage::try_new(DatabaseConfig::new(), pool).await.unwrap();
32//! let route = Route::new().at("/", index).with(ServerSession::new(CookieConfig::new(),storage));
33//! ```
34
35#![doc(html_favicon_url = "https://raw.githubusercontent.com/poem-web/poem/master/favicon.ico")]
36#![doc(html_logo_url = "https://raw.githubusercontent.com/poem-web/poem/master/logo.png")]
37#![forbid(unsafe_code)]
38#![deny(private_in_public, unreachable_pub)]
39#![cfg_attr(docsrs, feature(doc_cfg))]
40#![warn(missing_docs)]
41
42#[cfg(any(
43 feature = "sqlx-mysql-rustls",
44 feature = "sqlx-mysql-native-tls",
45 feature = "sqlx-postgres-rustls",
46 feature = "sqlx-postgres-native-tls",
47 feature = "sqlx-sqlite-rustls",
48 feature = "sqlx-sqlite-native-tls"
49))]
50pub mod sqlx;
51
52mod config;
53#[cfg(test)]
54mod test_harness;
55
56pub use config::DatabaseConfig;