summaryrefslogtreecommitdiffstats
path: root/service-person/src/db.rs
blob: 1094233d1472ba4cf4ac89eef3c1f88c99243627 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
use std::str::FromStr;

use diesel::pg::PgConnection;
use diesel::r2d2::ConnectionManager;
use diesel::r2d2::Pool;

pub type DbPool = Pool<ConnectionManager<PgConnection>>;

pub fn establish_connection() -> DbPool {
    let database_url = std::env::var("DATABASE_URL")
        .expect("DATABASE_URL must be set");

    let pool_max_size = std::env::var("DATABASE_MAX_CONNECTIONS")
        .as_ref()
        .map(|s| u32::from_str(s))
        .expect("DATABASE_URL must be set")
        .expect("Failed to parse string into integer for DATABASE_MAX_CONNECTIONS");

    let manager = diesel::r2d2::ConnectionManager::new(&database_url);
    diesel::r2d2::Pool::builder()
        .max_size(pool_max_size)
        .build(manager)
        .expect(&format!("Error connection to {}", database_url))
}