1use serde::{Deserialize, Serialize};
2
3#[derive(Debug, Clone, Serialize, Deserialize)]
4pub struct DbConfig {
5 #[serde(default)]
6 pub pg_con: String,
7 #[serde(default = "default_pool_size")]
8 pub pool_size: u32,
9}
10
11pub async fn init_pool(config: &DbConfig) -> anyhow::Result<sqlx::PgPool> {
12 let pool = sqlx::postgres::PgPoolOptions::new()
13 .max_connections(config.pool_size)
14 .connect(&config.pg_con)
15 .await?;
16
17 Ok(pool)
18}
19
20impl Default for DbConfig {
21 fn default() -> Self {
22 Self {
23 pg_con: "".to_string(),
24 pool_size: default_pool_size(),
25 }
26 }
27}
28
29fn default_pool_size() -> u32 {
30 20
31}