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;