better_auth_diesel_sqlite/lib.rs
1//! # `better-auth-diesel-sqlite`
2//!
3//! A `SQLite` database adapter for [`better-auth-rs`](https://github.com/better-auth-rs/better-auth-rs)
4//! using [`Diesel`](https://diesel.rs) ORM with `tokio::task::spawn_blocking`
5//! for non-blocking database access.
6//!
7//! This crate implements the full `DatabaseAdapter` trait and all 10 operation sub-traits,
8//! enabling `better-auth-rs`'s complete plugin ecosystem (API keys, organizations, admin, 2FA,
9//! passkeys, OAuth, sessions, and more) to work with `SQLite` databases.
10//!
11//! ## Quick Start
12//!
13//! ```rust,no_run
14//! use better_auth::{AuthBuilder, AuthConfig};
15//! use better_auth::plugins::{EmailPasswordPlugin, SessionManagementPlugin, ApiKeyPlugin};
16//! use better_auth::plugins::api_key::ApiKeyConfig;
17//! use better_auth_diesel_sqlite::DieselSqliteAdapter;
18//!
19//! # async fn example() -> Result<(), Box<dyn std::error::Error>> {
20//! let adapter = DieselSqliteAdapter::new("sqlite://auth.db").await?;
21//!
22//! let config = AuthConfig::new("your-secret-key-at-least-32-chars-long")
23//! .base_url("http://localhost:8080");
24//!
25//! let auth = AuthBuilder::new(config)
26//! .database(adapter)
27//! .plugin(EmailPasswordPlugin::new().enable_signup(true))
28//! .plugin(SessionManagementPlugin::new())
29//! .plugin(ApiKeyPlugin::with_config(ApiKeyConfig {
30//! prefix: Some("sk_".to_string()),
31//! ..ApiKeyConfig::default()
32//! }))
33//! .build()
34//! .await?;
35//! # Ok(())
36//! # }
37//! ```
38
39// Lint configuration is in Cargo.toml [lints] sections.
40
41pub mod adapter;
42pub mod config;
43pub mod error;
44#[allow(missing_docs)]
45pub mod models;
46pub mod ops;
47#[allow(missing_docs)]
48pub mod schema;
49
50mod conversions;
51
52pub use adapter::DieselSqliteAdapter;
53pub use config::PoolConfig;
54pub use error::AdapterError;