br_pgsql/
lib.rs

1use json::JsonValue;
2use crate::config::Config;
3
4mod config;
5pub mod connect;
6mod packet;
7mod format;
8pub mod pools;
9
10pub use connect::Connect as PgsqlConnect;
11pub use pools::Pools;
12pub use config::{PoolConstraints, PoolOpts};
13
14#[derive(Clone, Debug)]
15pub struct Pgsql {
16    /// 基础配置
17    pub config: Config,
18}
19
20impl Pgsql {
21    /// 配置文件加载
22    pub fn new(config: &JsonValue) -> Result<Self, String> {
23        Ok(Self { 
24            config: Config::new(config)? 
25        })
26    }
27
28    /// 获取连接
29    pub fn connect(&mut self) -> Result<PgsqlConnect, String> {
30        PgsqlConnect::new(self.config.clone())
31    }
32    /// 获取连接池
33    /// 使用配置中的 pool_max 或默认值 10
34    /// 推荐使用 pools_with_opts 方法进行更精细的配置
35    pub fn pools(&mut self) -> Result<crate::pools::Pools, String> {
36        let pool_size = self.config.pool_max as usize;
37        crate::pools::Pools::new_with_size(self.config.clone(), pool_size)
38    }
39    
40    /// 获取连接池(带选项配置)
41    /// 参考 mysql 的 Pool::new 方式,支持更精细的连接池配置
42    pub fn pools_with_opts(&mut self, pool_opts: crate::config::PoolOpts) -> Result<crate::pools::Pools, String> {
43        crate::pools::Pools::new(self.config.clone(), pool_opts)
44    }
45}