mirror of
https://github.com/aljazceru/cdk.git
synced 2025-12-29 02:25:11 +01:00
36 lines
1008 B
Rust
36 lines
1008 B
Rust
use std::str::FromStr;
|
|
use std::time::Duration;
|
|
|
|
use sqlx::sqlite::{SqliteConnectOptions, SqlitePoolOptions};
|
|
use sqlx::{Error, Pool, Sqlite};
|
|
|
|
#[inline(always)]
|
|
pub async fn create_sqlite_pool(
|
|
path: &str,
|
|
#[cfg(feature = "sqlcipher")] password: String,
|
|
) -> Result<Pool<Sqlite>, Error> {
|
|
let db_options = SqliteConnectOptions::from_str(path)?
|
|
.busy_timeout(Duration::from_secs(10))
|
|
.read_only(false)
|
|
.pragma("busy_timeout", "5000")
|
|
.pragma("journal_mode", "wal")
|
|
.pragma("synchronous", "normal")
|
|
.pragma("temp_store", "memory")
|
|
.pragma("mmap_size", "30000000000")
|
|
.shared_cache(true)
|
|
.create_if_missing(true);
|
|
|
|
#[cfg(feature = "sqlcipher")]
|
|
let db_options = db_options.pragma("key", password);
|
|
|
|
let pool = SqlitePoolOptions::new()
|
|
.min_connections(1)
|
|
.max_connections(1)
|
|
.idle_timeout(None)
|
|
.max_lifetime(None)
|
|
.connect_with(db_options)
|
|
.await?;
|
|
|
|
Ok(pool)
|
|
}
|