next_web_dev/manager/
database_manager.rs

1use crate::autoconfigure::context::datasource_properties::DataSourceProperties;
2
3#[derive(Clone)]
4pub struct DatabaseManager {
5    rbs: rbatis::RBatis,
6    options: DataSourceProperties,
7}
8
9impl DatabaseManager {
10    pub fn new(rbs: rbatis::RBatis, options: DataSourceProperties) -> Self {
11        Self { rbs, options }
12    }
13
14    pub fn get_conn(&self) -> &rbatis::RBatis {
15        &self.rbs
16    }
17
18    pub fn options(&self) -> &DataSourceProperties {
19        &self.options
20    }
21}
22
23use crate::middleware::check_status::MiddlewareCheckStatus;
24use async_trait::async_trait;
25
26#[async_trait]
27impl MiddlewareCheckStatus for DatabaseManager {
28    async fn status(&self) -> Result<(), Box<dyn std::error::Error>> {
29        let conn = self.rbs.try_acquire_timeout(std::time::Duration::from_secs(2)).await?;
30        conn.query("SELECT 1;", vec![]).await?;
31        Ok(())
32    }
33}