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 pub config: Config,
18}
19
20impl Pgsql {
21 pub fn new(config: &JsonValue) -> Result<Self, String> {
23 Ok(Self {
24 config: Config::new(config)?
25 })
26 }
27
28 pub fn connect(&mut self) -> Result<PgsqlConnect, String> {
30 PgsqlConnect::new(self.config.clone())
31 }
32 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 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}