Registry / RepositoryTypeScriptRustPython
Rollpie
ReadmeFiles
Versions
Info
Download
0.1.280.1 KB2026-09-140.1.167.6 KB2026-09-140.1.064.9 KB2026-09-14
Version
0.1.0
Copyright
Rollpie, Irohabook
Publisher
math
Published
2026-09-14
Size
64.9 KB
Downloads
2
Checksum
3f5a7260ef28c5f7ca3540b87faa9176bdf8039ad720f809e49a0f7117b8528b
Dependencies
None

database.rs

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
//! SQLite の接続プールを作る

use anyhow::Context;
use sqlx::SqlitePool;
use sqlx::sqlite::{SqliteConnectOptions, SqliteJournalMode, SqlitePoolOptions};
use std::str::FromStr;


/// 接続プールを作る。表の用意は使う側と [`crate::session::prepare`] が行う
pub async fn connect(url: &str) -> anyhow::Result<SqlitePool> {
    // WAL にしないと、書き込みのあいだ読み込みまで止まる。sqlx は既定でここを触らない
    let options = SqliteConnectOptions::from_str(url)
        .with_context(|| format!("DATABASE_URL={url} を SQLite の場所として読めません"))?
        .create_if_missing(true)
        .journal_mode(SqliteJournalMode::Wal);

    SqlitePoolOptions::new()
        .max_connections(8)
        .connect_with(options)
        .await
        .with_context(|| format!("SQLite につながりません: {url}"))
}