1use sqlx::{postgres::PgPoolOptions, PgPool};
2
3pub async fn read_only_db(url: &str) -> anyhow::Result<PgPool> {
9 PgPoolOptions::new()
10 .after_connect(|conn, _| {
11 Box::pin(async move {
12 sqlx::query("SET SESSION CHARACTERISTICS AS TRANSACTION READ ONLY;")
13 .execute(conn)
14 .await?;
15 Ok(())
16 })
17 })
18 .connect(url)
19 .await
20 .map_err(Into::into)
21}
22
23pub async fn read_write_db(url: &str) -> anyhow::Result<PgPool> {
24 PgPoolOptions::new().connect(url).await.map_err(Into::into)
25}